使用lapply with if来测试列表中的每个元素

rsg*_*mon 7 if-statement r lapply

假设我有一个列表:

alist<- list(4,6,8,9)
Run Code Online (Sandbox Code Playgroud)

我希望测试每个列表元素是否大于7,如果为真,则返回1的列表,如果为false则返回0.

但是我必须使用lapply.

lapply(alist,if,>7,1) or lapply(alist,if,cond>7,1)
Run Code Online (Sandbox Code Playgroud)

当然这些都不起作用,我不断收到以下错误.

Error: unexpected ',' in "lapply(alist, if,"
Run Code Online (Sandbox Code Playgroud)

Tyl*_*ker 20

我很难回答这个问题,因为这样做是非常不可靠的.您可以尝试更明确地使用括号,如下所示:

lapply(alist, function(x) if (x > 7) {1} else {0})
Run Code Online (Sandbox Code Playgroud)

或矢量化 ifelse

lapply(alist, function(x) ifelse(x > 7, 1, 0))
Run Code Online (Sandbox Code Playgroud)

或者最重要的是:

as.numeric(alist > 7)
Run Code Online (Sandbox Code Playgroud)