如何基于R中的列表特征指示列表和向量列表中的某些元素

科林茶

例如

testList<-list(list(a=1,b=2,c=3),c(1,2),list(a=1,b=2,c=0))

我有一个数字矢量列表或3个元素列表。

我想要一个指示列表元素的布尔值,其中第三个元素(元素c)> 0。

如果我跑步

sapply(testList,function(x)is.list(x) & x[[3]]>1)

我得到:

x [[3]]中的错误:下标超出范围。

但是,真正的问题在于,x[[3]]>1只能应用于列表,而不能应用于向量。

boolean需要是长度testList有任何简单的方法吗?

阿克伦

我们可以使用if/else条件来解决这个问题。if/else确认第二个条件将只适用于list

sapply(testList, function(x) if(is.list(x)) x[[3]] >0 else FALSE)
#[1]  TRUE FALSE FALSE

根据 ?"if"

if返回所求值的表达式的值,如果不存在则返回NULL(如果没有,则可能发生)。

当有NA时,也可以使用此方法而无需使用其他大括号。

testList[[3]][[3]] <- NA
sapply(testList, function(x) if(is.list(x)) x[[3]] >0 & !is.na(x[[3]]) else FALSE)
#[1]  TRUE FALSE FALSE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章