मुझे डेटा फ्रेम में सभी कॉलम की कक्षाएं कैसे मिलेंगी?


85

यह जानने का एक आसान तरीका है कि डेटा कॉलम में प्रत्येक कॉलम किस वर्ग का है?

जवाबों:


91

एक विकल्प lapplyऔर उपयोग करना है class। उदाहरण के लिए:

> foo <- data.frame(c("a", "b"), c(1, 2))
> names(foo) <- c("SomeFactor", "SomeNumeric")
> lapply(foo, class)
$SomeFactor
[1] "factor"

$SomeNumeric
[1] "numeric"

एक अन्य विकल्प है str:

> str(foo)
'data.frame':   2 obs. of  2 variables:
 $ SomeFactor : Factor w/ 2 levels "a","b": 1 2
 $ SomeNumeric: num  1 2

20
इसके अलावाsapply(foo, class)
MYaseen208

9
चूंकि सभी वर्गों के classएक चरित्र वेक्टर से एक वस्तु प्राप्त होती है, जिसका उत्पादन एक सूची हो सकती है, और हमेशा एक चरित्र वेक्टर नहीं होता है जैसा कि ज्यादातर लोग उम्मीद करते हैं। जो थोड़ा खतरनाक हो सकता है ... मुझे बहुत सुरक्षित लगता है। sapply(foo, class)lapply
फ्लोडेल

1
बेहतर पठनीयता के लिए मैं सुझाव देता हूं: unlist(lapply(foo, class))जो बहुत सारे कॉलम के साथ डेटा फ्रेम के साथ काम करता है।
p130ter

1
unlistके साथ lapplyएक भयानक विचार है क्योंकि यह संभव है कि length(class(x))>1 (ऊपर टिप्पणी देखें) - sapplyकी तुलना में बहुत अधिक सुरक्षित है unlist + lapply। एक सुरक्षित तरीका होगा sapply(lapply(foo, class), "[", 1)- यह देखते हुए कि फू एक डेटा फ्रेम है
lebatsnok

27

आप सरल lapplyया sapplyबिलिन कार्यों का उपयोग कर सकते हैं ।

lapplyआपको लौटा देगा list-

lapply(dataframe,class)

जबकि sapplyसबसे अच्छा संभव वापसी प्रकार पूर्व ले जाएगा। वेक्टर आदि -

sapply(dataframe,class)

दोनों कमांड आपको सभी कॉलम नामों को उनके संबंधित वर्ग के साथ वापस कर देंगे।



0

आप भी उपयोग कर सकते हैं purrr, जो applyपरिवार के कार्यों के समान है :

as.data.frame(purrr::map_chr(mtcars, class))
purrr::map_df(mtcars, class)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.