2012-10-28 13 views
7

मान लीजिए में प्रत्येक तत्व का परीक्षण करने के साथ मैं एक सूची है:का उपयोग lapply यदि एक सूची

alist<- list(4,6,8,9) 

मैं परीक्षण करना चाहते हैं प्रत्येक सूची तत्व 7 से अधिक है और अगर यह सच है और 0 यदि 1 की एक सूची प्रदान असत्य।

हालांकि मुझे लापरवाही का उपयोग करना चाहिए।

lapply(alist,if,>7,1) or lapply(alist,if,cond>7,1) 

बेशक इनमें से कोई भी काम नहीं है और मुझे निम्न त्रुटि मिल रही है।

Error: unexpected ',' in "lapply(alist, if," 
+0

मुझे पता है कि आप 'lapply' का उपयोग करना चाहते हैं, लेकिन: as.numeric (alist> 7)' अच्छी तरह से काम करता है। –

+3

"का उपयोग करना चाहिए 'lapply'" == "बेवकूफ होमवर्क असाइनमेंट"? –

+0

हा हा यिप कार्ल ने इसे नाखुश किया। जब मैं इसमें भाग गया तो मुझे असाइनमेंट का पता लगाने के तरीके के बारे में 30% लगता था। सोचा था कि यह एक अच्छा सवाल था हालांकि लापरवाही के रूप में ... एक तर्क के रूप में और मैंने वहां कहीं और पाया कि मैं अगर कथन पूरा कर सकता हूं। – user1181337

उत्तर

17

मुझे इसका जवाब देने में दर्द होता है क्योंकि यह ऐसा करने के लिए बहुत ही अन आर है। आप और अधिक स्पष्ट किया जा रहा कोशिश करते हैं और के रूप में कोष्ठक इस्तेमाल कर सकते हैं:

lapply(alist, function(x) if (x > 7) {1} else {0}) 

या vectorized ifelse

lapply(alist, function(x) ifelse(x > 7, 1, 0)) 

या सभी का सबसे अच्छा:

as.numeric(alist > 7) 
+0

+1 मेरे उत्तर के समान है, लेकिन मैं ifelse() को थोड़ा अनजान होने के बारे में नोट करता हूं क्योंकि यह एक नया आर उपयोगकर्ता लगता है। मजेदार है कि मैं यह इसलिए कहता हूं क्योंकि इससे पहले तत्काल प्रश्न somelse() lol के साथ एक बंद त्रुटि के बारे में शिकायत कर रहा था। –

+0

आप 'ifelse' के बारे में बहुत सही हैं (आईएमओ)। मैंने उत्तर दिया और कल शाम को 'ifelse' समस्या भी है (जब उपयोगकर्ता को' if() {} else {} 'का उपयोग करना चाहिए था) –

2

एक और दो:

lapply(alist > 7, as.integer) 

या

lapply(alist > 7, ifelse, 1, 0) 
संबंधित मुद्दे