2012-10-28 11 views
7

varsayalım bir listedeki her eleman sınamak için yazıp: her liste elemanı 7'den büyük olduğunda ve eğer gerçek ve 0 ise 1 listesini dönersenizkullanma lapply ben bir liste var

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

Testi istiyorum yanlış. Bununla birlikte, lapply kullanmalıyım.

lapply(alist,if,>7,1) or lapply(alist,if,cond>7,1) 
bu işin tabii hiçbiri Of

ve aşağıdaki hatayı alıyorum.

+0

Biliyorum, "lapply" yi kullanmak istediğini biliyorum ama: "as.numeric (alist> 7)" güzel çalışıyor. –

+3

"lapply' =" aptal ev ödevi "kullanmalı mıdır? –

+0

Ha ha yip Carl çivilenmiş. Bu işe girdiğimde ödevi bulmak için yolun yaklaşık% 30'unu düşünmüştüm. Gerçi, lapply'nin bir argüman olarak ... ... bir yerde anladım ve if ifadesini bitirebilirim. – user1181337

cevap

17

Bunu yapmak için beni acıtıyor çünkü bunu yapmak çok doğru değil. Daha açık olmak denemek ve olduğu gibi parantez kullanabilirsiniz:

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

Ya vektörleşen ifelse

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

Veya en iyisi:

as.numeric(alist > 7) 
+0

+1 cevabımla aynı, ancak ifelse() 'nin yeni bir R kullanıcısı gibi görünmesi biraz dikkat çekicidir. Bunu daha önce derhal soru çünkü ifelse() lol bir kapanma hatası hakkında şikayetçi somene oldu çünkü bu komik. –

+0

'ifelse' hakkında çok doğru (IMO) iseniz. Geçen akşam da 'ifelse' problemini cevapladım (eğer kullanıcı 'if() {} else {}') kullanıyorsa –

2

Başka ikisi:

lapply(alist > 7, as.integer) 

veya

lapply(alist > 7, ifelse, 1, 0) 
İlgili konular