/ / Używanie lapply z, jeśli chcesz przetestować każdy element na liście - r, if-statement, lapply

Używanie lapply z, jeśli chcesz przetestować każdy element listy - r, if-statement, lapply

Załóżmy, że mam listę:

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

Chcę przetestować, czy każdy element listy jest większy niż 7 i zwrócić listę 1, jeśli jest ona prawdziwa, a 0 - fałsz.

Jednak muszę używać lapply.

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

Oczywiście żaden z nich nie działa i ciągle pojawia się następujący błąd.

Error: unexpected "," in "lapply(alist, if,"

Odpowiedzi:

18 dla odpowiedzi № 1

Bolesne jest, że muszę odpowiedzieć na to pytanie, ponieważ jest to bardzo nieczytelne. Możesz spróbować być bardziej jednoznacznym i użyć nawiasów, jak w:

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

Lub wektoryzacji ifelse

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

Lub co najlepsze:

as.numeric(alist > 7)

2 dla odpowiedzi nr 2

Kolejne dwa:

lapply(alist > 7, as.integer)

lub

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