2010-11-24 11 views
20
names(U1) 

[1] "username"  "review_count" "forum_posts" "age"   "avg_interval" 
[6] "avg_sim"  "class" 

तो मैं एक खाली डेटा फ्रेम U1.RN कैसे बना सकता हूं जिसमें यू 1 के समान कॉलम होंगे?उसी कॉलम के साथ आर में खाली डेटाफ्रेम बनाएं

+4

क्या मैं पूछ सकता हूं कि आपको 0-पंक्ति डेटा फ्रेम क्यों चाहिए? आप इसके साथ क्या करने जा रहे हैं, इस पर निर्भर करते हुए, चीजों को एक अलग तरीके से करना अधिक कुशल हो सकता है (उदाहरण के लिए मुझे आशा है कि आप इस पंक्ति को लूप में पंक्ति से भरने की योजना नहीं बना रहे हैं?) –

+0

"उदाहरण के लिए मुझे आशा है कि आप नहीं हैं ' इस पंक्ति को एक लूप में पंक्ति से भरने की योजना बना रहे हैं? " - हाँ, :(। (छद्म कोड] के बराबर करने के लिए Ry तरीका क्या है (i 1: 6000 में) यदि (pred.U1.nb.c [i] == 'लेबल रहित') U1.RN [j ++ ,] <- यू 1 [i,] [/ pseudocode], जहां pred.U1.nb.c एक वेक्टर है जो मुझे भविष्यवाणी() से मिला है, और यू 1 की उन पंक्तियों का चयन करके डेटा फ्रेम बनाना चाहता है जो अनुमानित भविष्यवाणी करते हैं ? (... वर्बोज़ होने के लिए कड़ी मेहनत कर रहा है और एक साथ भ्रमित नहीं कर रहा है) – Tathagata

+6

आर में, अपने भंडारण को पूर्ववत करें! आप जानते हैं कि आप लूप से पहले 6000-पंक्ति डेटा फ्रेम चाहते हैं, इसलिए एक बनाएं और इसे पंक्ति में पंक्ति में भरें। या यहां तक ​​कि तेज; सही आयाम का एक मैट्रिक्स बनाएं, उस पंक्ति को पंक्ति से भरें, और उसके बाद डेटा फ्रेम में कनवर्ट करें, क्योंकि मैट्रिस के साथ काम करने के लिए बहुत तेज़ हैं। अगर आपको और मदद चाहिए (ऐसा लगता है कि आपको लूप की भी आवश्यकता नहीं है, बस कुछ सरल अनुक्रमण और सबसेटिंग/सम्मिलन), क्या आप एक नया क्यू शुरू कर सकते हैं और आप वास्तव में क्या करना चाहते हैं इसका एक उचित, छोटा उदाहरण प्रदान कर सकते हैं? यदि आप करते हैं, तो मैं इसे देखने का वादा करता हूं और उत्तर देता हूं –

उत्तर

58

आप ऐसा कर सकते हैं:

slice(U1, 0) 
filter(U1, FALSE) 
filter(U1, NA) 

slice दृष्टिकोण शायद स्पष्ट है:

U1.RN <- U1[0,] 
+0

बिल्कुल सही .....> U1.RN <-U1 [0,] > नाम (U1.RN) [1] "उपयोगकर्ता नाम" "review_count" "forum_posts" "उम्र" "avg_interval" [6] "avg_sim" "वर्ग" > Nrow (U1) [1] 6000 > Nrow (U1.RN) [1] 0 – Tathagata

+3

+1 साफ !!!!!! !! (अतिरिक्त! न्यूनतम चरित्र सीमा को पार करने के लिए थे, ओह, प्रतीक्षा करें, ... ;-) –

2

dplyr का उपयोग करना, वहाँ कुछ अच्छे विकल्प हैं।

+1

'फ़िल्टर (गलत) 'भी काम करता है और शायद इरादे का थोड़ा स्पष्ट है। 'टुकड़ा (0) 'भी बेहतर हो सकता है। – Gregor

+0

सहमत हैं कि 'टुकड़ा (0) 'पठनीयता/स्पष्टता पर विजेता प्रतीत होता है – joemienko

1

डीएफ [0,] की रेखाओं के साथ आप एक बुलियन मास्क का भी उपयोग कर सकते हैं जो कोड को और अधिक पठनीय बना सकता है: डीएफ [गलत,]।

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