dataframe - R subset data frame by two vectors -


मेरे पास एक डेटा फ़्रेम और दो पूर्णांक वाला नाम है left और right

मैं डेटा फ्रेम का एक सबसेट ऐसे तरीके से बनाना चाहता हूं कि वैक्टर में संख्याएं उप-भाग में शामिल होने वाले कॉलम की सीमा को इंगित करेगी।

> उदाहरण के लिए, डेटा फ्रेम में एनथ पंक्ति के लिए, मैं मान को df [n, left [n]: right [n] रखना चाहते हैं। मैंने ऐसा करने की कोशिश की mapply () :

  aligned_rows & lt; -apply (df, 1, फ़ंक्शन (x) mapply (फ़ंक्शन (y, z) x [y   

यह कमांड चाल करता है:

  as.data.frame (t (mapply (फ़ंक्शन (x, y, z) df [x, y : Z], x = seq_len (nrow (df)), y = left, z = right)))  

यहाँ एक उदाहरण है:

  Set.seed (10) df & lt; - डेटा.फ्रेम (दोहराएं (8, रनफ (4))) # एक्स 1 एक्स 2 एक्स 3 एक्स 4 एक्स 5 एक्स 6 एक्स 7 एक्स 8 # 0.51 0.09 0.62 0.11 0.05 0.86 0.41 0.77 # 0.31 0.23 0.43 0.60 0.26 0.62 0.71 0.36 # 0.43 0.28 0.65 0.36 0.40 0.78 0.84 0.54 # 0.69 0.27 0.57 0.43 0.84 0.36 0.24 0.09  
  बाएं & lt; -c (1,3 , 5, 7) सही & lt; - c (2,4,6,8) as.data.frame (t (mapply (कार्य (x, y, z) df [x, y: z], x = seq_len ( Nrow (DF)), वाई छोड़ दिया =, z = रिग एचटी)))  

पैदावार

  # x1 x2 # 0.51 0.09 # 0.43 0.60 # 0.40 0.78 # 0.24 0.09  
< P> इसके लिए काम करने के लिए, बाएं और right द्वारा परिभाषित प्रत्येक श्रेणी में तत्वों की समान संख्या होनी चाहिए इसके अलावा, दोनों बायां और सही में कई तत्व होते हैं क्योंकि इसमें df में पंक्तियाँ हैं।


Comments