【发布时间】:2012-01-01 23:38:58
【问题描述】:
我有一个简单但奇怪的问题。
indices.list 是一个列表,包含 118,771 个元素(整数或数字)。通过应用 unlist 函数,我丢失了大约 500 个元素。
看下面的代码:
> indices <- unlist(indices.list, use.names = FALSE)
>
> length(indices.list)
[1] 118771
> length(indices)
[1] 118248
这怎么可能?我检查了 indices.list 是否包含任何 NA。但它没有:
> any(is.na(indices.list) == TRUE)
[1] FALSE
data.set.merged 是一个包含超过 200,000 行的数据框。当我使用向量索引(显然长度为 118,248)来获取 data.set.merged 的子集时,我得到一个包含 118,771 行的数据框!??太奇怪了!
data.set.merged.2 <- data.set.merged[indices, ]
> nrow(data.set.2)
[1] 118771
有什么想法吗?
【问题讨论】:
-
能否请您提供更多有关
indices和indices.list的信息,例如class(indicies)、str(indicies)等。 -
我真的很想见
dput(indices.list)=) -
好的,我查看了 dput(indices.list) 并找到了一些元素 integer(0)。这可能是问题所在。如何测试有多少元素等于 intrger(0)? integer(0) 到底是什么意思?我使用 grep 函数创建了 indices.integer。
-
integer(0)只是一个整数类型的零长度向量。您可以通过检查它们的长度来找到这些东西,长度为 0。它们也将被删除 bu unlist 以及 NULL。但是,如果您期望得到好的答案,您将不得不更加积极地提供相关、有用(可重现!)的信息。
标签: r