में मानों का सशर्त प्रतिस्थापन मैं समझने की कोशिश कर रहा हूं कि एक लूप का उपयोग किए बिना डेटाफ्रेम में सशर्त को कैसे सशर्त करना है। मेरे डेटा फ्रेम इस प्रकार संरचित है:डेटा.फ्रेम
> df
a b est
1 11.77000 2 0
2 10.90000 3 0
3 10.32000 2 0
4 10.96000 0 0
5 9.90600 0 0
6 10.70000 0 0
7 11.43000 1 0
8 11.41000 2 0
9 10.48512 4 0
10 11.19000 0 0
और dput
उत्पादन यह है:
structure(list(a = c(11.77, 10.9, 10.32, 10.96, 9.906, 10.7,
11.43, 11.41, 10.48512, 11.19), b = c(2, 3, 2, 0, 0, 0, 1, 2,
4, 0), est = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), .Names = c("a",
"b", "est"), row.names = c(NA, -10L), class = "data.frame")
मैं आपकी क्या अपेक्षाएं हैं, b
के मान की जाँच करने के लिए है। यदि b
0 है, तो को a
से मान के लिए सेट करना चाहता हूं। मैं समझता हूं कि df$est[df$b == 0] <- 23
est
से 23 के सभी मान सेट करेगा, जब b==0
। मुझे समझ में नहीं आता है कि est
a
के मान पर सेट करने के लिए यह स्थिति कब सही है। उदाहरण के लिए:
Warning message:
In df$est[df$b == 0] <- (df$a - 5)/2.533 :
number of items to replace is not a multiple of replacement length
वहाँ एक रास्ता है कि मैं नहीं बल्कि वेक्टर से, प्रासंगिक सेल पारित कर सकते हैं है:
df$est[df$b == 0] <- (df$a - 5)/2.533
निम्नलिखित चेतावनी देता है?
यह एक वोट दें हकदार अगर आप पहले आर इन्फर्नो पेज के लिए या तो एक लिंक जोड़ने , या '$ '(या आदर्श दोनों) के साथ मुद्दों को सारांशित करें। – Andrie
+1 हालांकि मुझे लगता है कि इस मामले में '$' ऑपरेटर पूरी तरह ठीक है। (साथ ही, मुझे लगता है कि आपकी चेतावनी के बावजूद आप '$' स्वयं का उपयोग करते हैं ...) – Andrie
@Andrie: हाँ, मैंने इसे इस्तेमाल किया जहां यह काम करता है (ऐसा नहीं है कि यह बहुत मदद है :-))। ओपी ने यह परिभाषित करने की कोशिश की कि किस तत्व पर कार्य किया जा रहा है, जहां समस्या शुरू हुई थी। मैंने बस उस स्थिति को परिभाषित करने के लिए उपयोग किया जो डेटाफ्रेम तत्वों का चयन करता है। लेकिन आप जानते थे कि :-) –