我有一个对象列表,每个对象的长度各不相同(包含1到n个元素)。如何找到长度为1的对象的索引?
我试过了:
lapply(list,function(x) x[which(length(x)==1)])
这可以正确识别长度为1的对象,但不会在列表中给出表示其索引的数值。
答案 0 :(得分:3)
您可以使用lengths()
函数获取列表中每个元素的长度,将结果与逻辑索引的结果进行比较,然后用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
答案 1 :(得分:0)
可能会有轻微的语法错误,但一般来说这就是你可以做的:
#instantiate indexes vector here
list.length <- length(list)
for (i in 1:list.length) {
if (length(list[i])==1) {
indexes <- c(indexes, i)
}
}