2011-11-02 16 views
9

के लिए पेस्ट विधि मैं पेस्ट में डेटाफ्रेम इनपुट करना चाहता हूं और मैं इसे पेस्ट करना चाहूंगा जैसे कि मैंने उस डेटाफ्रेम के कॉलम को अलग से इनपुट किया था। कारण मैं ऐसा करना चाहता हूं क्योंकि मुझे यकीन नहीं है कि मेरे डेटाफ्रेम के कितने कॉलम होंगे। यहां 2 है, लेकिन मुझे किसी भी कॉलम से निपटने के लिए एक सामान्य समाधान चाहिए।डेटाफ्रेम

मेरा वांछित आउटपुट निम्नलिखित कोड में test1paste है। लेकिन मैं स्पष्ट रूप से कॉलम का उल्लेख नहीं करना चाहता हूं। मेरा apply प्रयास समझ में विफल रहता है क्योंकि यह कॉलम पर व्यक्तिगत रूप से कार्य करता है, हालांकि मुझे लगता है कि यह उस समाधान में आता है जिसे मैं ढूंढ रहा हूं।

> test1 <- 
+ structure(c(42.71, 41.69, 46.95, 48.85, 45.26, 44.71, 43.71, 
+ 42.69, 47.95, 49.85, 46.26, 45.71), .Dim = c(6L, 2L)) 
> 
> test1paste <- paste(test1[,1],test1[,2], sep = "&") 
> test1paste 
[1] "42.71&43.71" "41.69&42.69" "46.95&47.95" "48.85&49.85" "45.26&46.26" 
[6] "44.71&45.71" 
> 
> apply(test1,MARGIN=2,paste,sep="&") 
    [,1] [,2] 
[1,] "42.71" "43.71" 
[2,] "41.69" "42.69" 
[3,] "46.95" "47.95" 
[4,] "48.85" "49.85" 
[5,] "45.26" "46.26" 
[6,] "44.71" "45.71" 

कोई विचार?

धन्यवाद!

+0

क्या इसका लाटेक्स के साथ कुछ लेना देना है? –

+0

@ रोमन हां, आपने अनुमान लगाया! मैं 'xtable' का उपयोग नहीं कर रहा हूं क्योंकि मैं मानक त्रुटियों को ब्रांड्स के अंदर अनुमानों के तहत जाना चाहता हूं। –

+0

आपने मुझे एक खुली किताब की तरह पढ़ा। :) –

उत्तर

7

कैसे इस बारे में:

> apply(test1,1,paste,collapse="&") 
[1] "42.71&43.71" "41.69&42.69" "46.95&47.95" "48.85&49.85" "45.26&46.26" 
[6] "44.71&45.71" 
+0

धन्यवाद कि मुझे वही चाहिए जो मुझे चाहिए। –

8

यदि आपका "dataframe" वास्तव में है एक data.frame (और नहीं एक matrix अपने उदाहरण के रूप में), तो आपको do.call सीधे इस्तेमाल कर सकते हैं:

testdf <- as.data.frame(test1) 
do.call(paste, c(testdf, sep="&")) 

यह निर्भर करता है इस तथ्य पर कि data.frame एक गौरवशाली list है, और do.call तर्कों की एक सूची लेता है। मैं सूची में sep तर्क जोड़ता हूं ...

हालांकि छोटी सी चेतावनी हालांकि: यदि कोई कॉलम नाम "सीपी" या "पतन" है तो आप परेशानी में पड़ सकते हैं। कॉलम नामों को हटाने से उस मामले में मदद मिलेगी:

do.call(paste, c(unname(testdf), sep="&")) 
+0

धन्यवाद! मुझे 'do.call' सीखना होगा क्योंकि यह बेहद उपयोगी लगता है। और मैं एक मैट्रिक्स का उपयोग उदाहरण के रूप में स्पष्ट करने के लिए क्षमा चाहता हूं, जिसमें मुझे दिलचस्पी है। आपके सावधानीपूर्वक समाधान के लिए धन्यवाद। –

संबंधित मुद्दे