2011-07-01 14 views
10

के रूप में स्तंभ नाम से एक data.frame मैं समझता हूँ कि मैं इस तरह के रूप में एक data.frame आदेश कर सकते हैं:आर - क्रम CHARACTER

test = data.frame(A=c(4,2,4), B=c(8,3,2)) 
ordered = test[with(test, order(A,B)) , ] 

लेकिन यह कैसे मैं इसी कार्य को पूरा जब स्तंभ द्वारा निर्दिष्ट करना चरित्र चर के रूप में नाम? यह काम करने के लिए प्रतीत नहीं होता:

test = data.frame(A=c(4,2,4), B=c(8,3,2)) 
cols = c("A" , "B") 
ordered = test[ with(test, order(cols)) , ] 

वहाँ एक रास्ता बी को 'बी' में परिवर्तित करने, ताकि स्तंभ में मान्यता प्राप्त है है? मैं इस समस्या को अक्सर कार्यों कि स्तंभ नाम आदानों लेने के साथ लगता है। क्या इस समस्या का वर्णन करने के लिए कुछ शब्द है- आर में स्पेस (चरित्र पहचानकर्ता बनाम गैर-चरित्र पहचानकर्ता)?

+2

मुझे कहना पड़ेगा क्यों इस सवाल नीचे मतदान किया था मुझे समझ नहीं आता। ऐसा लगता है कि अमूर्तता में "अगले स्तर" तक पहुंचने में सहायता मांगी जा रही है। यदि यह एक डुप्लिकेट है तो अनाम मतदाता को कदम उठाना चाहिए और हमें दिखाएं। –

+1

@DWin - मैं समर्थन की सराहना करता हूं! मैं डाउनवोट द्वारा भी उलझन में था। – SFun28

उत्तर

10

बजाय का प्रयास करें:

ordered = test[ with(test, order(B)) , ] 

या:

colnm <- "B" 
ordered2 = test[ order(test[[colnm]]) , ] 

एक से अधिक स्तंभ के लिए ऑर्डर करने के लिए आप की जरूरत:

ordered2 = test[ order(test[["B"]]) , ] 

दूसरा रूप आप की तरह कुछ करने के लिए अनुमति होगी (मदद पृष्ठ से उदाहरण) do.call उपयोग करने के लिए:

012,351,
d4 <- data.frame(x = round( rnorm(100)), y = round(10*runif(100)), 
        z = round(8*rnorm(100)), u = round(50*runif(100))) 
d4s <- d4[ do.call(order, d4[ , c("x", "y") ]), ] 
+0

मेरे सवाल के इरादे एक चरित्र में नाम से 'बी' (या किसी अन्य स्तंभ) प्रदान करना है। इसलिए मैं दूसरे शब्दों में था एक चर toSort = c ("बी", "ए") – SFun28

+0

कल्पना, मैं समय कौन-कौनसे कॉलम क्रमबद्ध करना चाहते हैं के आगे पता नहीं है ... मैं एक पैरामीटर/चर के रूप में उपलब्ध कराना चाहते हैं। इस – SFun28

+0

@ SFun25 को प्रतिबिंबित करने के लिए मेरे प्रश्न को अपडेट किया गया: मेरा परिशिष्ट देखें। –