R 如何在列表中找到长度为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)

我有一个对象列表,每个对象都有不同的长度(包含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) {
    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
会为您提供答案。