仅选择包含R中有两列的表的列表的元素
我有一个包含10000个元素的列表,每个元素包含一个具有不同列数的表,下面显示了一个示例列表(元素较少)。是否有办法只选择额外列表中有两列的元素,但只显示数字而不显示字符(如示例仅选择包含R中有两列的表的列表的元素,r,list,R,List,我有一个包含10000个元素的列表,每个元素包含一个具有不同列数的表,下面显示了一个示例列表(元素较少)。是否有办法只选择额外列表中有两列的元素,但只显示数字而不显示字符(如示例[[1]]]) 预期产出将是: $`1` 41 498 你知道什么解决方案吗?我们可以使用长度创建一个逻辑向量来子集列表,然后循环子集列表和命名,或者将向量转换为向量作为.vector或未列出(如果它是一个data.frame) 如果这些是列表中的data.frame lapply(lst1[sapply(lst1
[[1]]]
)
预期产出将是:
$`1`
41 498
你知道什么解决方案吗?我们可以使用
长度
创建一个逻辑向量来子集列表
,然后循环子集列表
和命名,或者将向量转换为向量作为.vector
或未列出
(如果它是一个data.frame)
如果这些是列表中的data.frame
lapply(lst1[sapply(lst1, ncol) == 2], unlist, use.names = FALSE)
数据
lst1这里我使用lappy来找到哪些长度等于2,然后索引
让我成为你的名单
L[lappy(L,长度)==2]
也许你可以试试
子集
带有长度
过滤器
数据
> dput(lst)
list(`1` = c(a = 41, g = 498), `2` = c(c = 40, t = 499, g = 1
), `3` = c(a = 28, c = 36, g = 466, t = 9), `4` = c(t = 539))
您是否有表
对象或数据.frame
或刚刚命名为列表的向量
元素这是刚刚命名的向量,谢谢您的回答。
lapply(lst1[sapply(lst1, ncol) == 2], unlist, use.names = FALSE)
lst1 <- list(`1` = c(a = 41, g = 498), `2` = c(c = 40, t = 499, g = 1
), `3` = c(a = 28, c = 36, g = 466, t = 9), `4` = c(t = 539))
> subset(lst,lengths(lst)==2)
$`1`
a g
41 498
> Filter(function(x) length(x)==2,lst)
$`1`
a g
41 498
> dput(lst)
list(`1` = c(a = 41, g = 498), `2` = c(c = 40, t = 499, g = 1
), `3` = c(a = 28, c = 36, g = 466, t = 9), `4` = c(t = 539))