R 如何在列表中找到长度为1的对象的索引?
我有一个对象列表,每个对象都有不同的长度(包含1到n个元素)。如何找到长度为1的对象的索引 我试过:R 如何在列表中找到长度为1的对象的索引?,r,R,我有一个对象列表,每个对象都有不同的长度(包含1到n个元素)。如何找到长度为1的对象的索引 我试过: lapply(list,function(x) x[which(length(x)==1)]) 这样可以正确标识长度为1的对象,但不会给出表示其在列表中的索引的数值 可能有轻微的语法错误,但一般来说,这是您可以做的: #instantiate indexes vector here list.length <- length(list) for (i in 1:list.length)
lapply(list,function(x) x[which(length(x)==1)])
这样可以正确标识长度为1的对象,但不会给出表示其在列表中的索引的数值 可能有轻微的语法错误,但一般来说,这是您可以做的:
#instantiate indexes vector here
list.length <- length(list)
for (i in 1:list.length) {
if (length(list[i])==1) {
indexes <- c(indexes, i)
}
}
#在此处实例化索引向量
list.length您可以使用length()
函数获取列表中每个元素的长度,将结果与逻辑索引的1进行比较,然后使用which()
换行以获取数字索引
which(lengths(list) == 1)
可复制示例:
set.seed(1)
(x <- replicate(3, sample(5, sample(3))))
# [[1]]
# [1] 5
#
# [[2]]
# [1] 4
#
# [[3]]
# [1] 1 3
which(lengths(x) == 1)
# [1] 1 2
set.seed(1)
(x您的lappy
在名为list
的对象的每个元素上运行函数,并返回每个元素中哪些元素的长度为1。我认为。您可以这样使用lappy:unlist(lappy(mylist,length))
(PS不会使用与R函数相同的名称命名对象,如list
)但是,length
会为您提供答案。