我有一个嵌套列表,看起来像这样:
characlist<-list(list(c(1,2,3,4)),c(1,3,2,NA))
Run Code Online (Sandbox Code Playgroud)
接下来,我想用NA替换所有等于1的值.我尝试了以下,但它产生了一个错误:
lapply(characlist,function(x) ifelse(x==1,NA,x))
Error in ifelse(x == 1, NA, x) :
(list) object cannot be coerced to type 'double'
Run Code Online (Sandbox Code Playgroud)
有人能告诉我代码有什么问题吗?
tal*_*lat 13
rapply
改为使用:
> rapply(characlist,function(x) ifelse(x==1,NA,x), how = "replace")
#[[1]]
#[[1]][[1]]
#[1] NA 2 3 4
#
#
#[[2]]
#[1] NA 3 2 NA
Run Code Online (Sandbox Code Playgroud)
您最初的方法中的问题是您的第一个列表元素本身就是一个列表.因此,您不能ifelse
像在原子矢量上那样直接应用逻辑.通过使用?rapply
你可以避免这个问题(rapply
是一个递归版本lapply
).
归档时间: |
|
查看次数: |
10309 次 |
最近记录: |