r - cbind संख्या के साथ स्ट्रिंग बदलता है?
vector matrix (2)
x = iris$Sepal.Width;
y = iris$Species;
m = cbind(x,y);
मीटर का उत्पादन है:
x y
[1,] 3.5 1
[2,] 3.0 1
[3,] 3.2 1
[4,] 3.1 1
[5,] 3.6 1
[6,] 3.9 1
लेकिन मुझे 'सेटोसा' आदि चाहिए, आदि। किसी संख्या के बजाय कॉलम y में
मैं उसे कैसे कर सकता हूँ?
मैं 2 वेक्टरों को जोड़ना चाहता हूं क्योंकि मैं बाद में इसके साथ फ़िल्टर करना चाहता हूं
m[m[,"y"]=="virginica",]
या किसी अन्य चीज को बिना किसी चीज के लिए करना है?
cbind()
एक matrix
देता है जो एक क्लास का होना चाहिए। इस मामले में सब कुछ character
में परिवर्तित हो जाता character
क्योंकि यह सबसे सामान्य वर्ग है (आप संख्याओं को वर्णों के रूप में व्यक्त कर सकते हैं, लेकिन अन्य तरह से नहीं) विभिन्न वर्गों के कॉलमों को स्टोर करने के लिए data.frame
पर निर्भर करता है।
क्या करना चाहते हैं, आप या तो स्पष्ट रूप से एक नया data.frame
बना सकते हैं या मौजूदा एक के सबसेट का उपयोग कर सकते हैं:
iris2 <- data.frame(x=iris$Sepal.Width, y=iris$Species) ## creates new data.frame
iris[, c("Sepal.Width", "Species") ## returns subset of iris
यदि आप जिस समस्या को हल करने की कोशिश कर रहे हैं, उसे पोस्ट करते हैं, तो आप चाहते हैं कि फ़िल्टर करने के लिए एक अधिक सुव्यवस्थित तरीका हो सकता है।
cbind
के साथ cbind
को cbind
, परिणाम एक matrix
, जो केवल एक प्रकार के डेटा को पकड़ सकता है। इस प्रकार, "प्रजाति" कारक को उसके अंतर्निहित संख्यात्मक मूल्य से जोड़ लिया जाता है।
इसके बदले cbind.data.frame
(या सिर्फ data.frame
) को data.frame
अगर आपको अलग-अलग डेटा प्रकार के लिए आपके कॉलम की आवश्यकता हो।
> head(data.frame(x, y))
x y
1 3.5 setosa
2 3.0 setosa
3 3.2 setosa
4 3.1 setosa
5 3.6 setosa
6 3.9 setosa
> head(cbind.data.frame(x, y))
x y
1 3.5 setosa
2 3.0 setosa
3 3.2 setosa
4 3.1 setosa
5 3.6 setosa
6 3.9 setosa