请检查我下面的示例代码,其中我创建了一个具有一些NA值的数据帧。我的colnames(test)[colSums(is.na(test))>0]
将为我提供具有NA值的列的名称。我的问题是,当我对列名称进行子集时,我应该给出子集化的数字或逻辑值,但我注意到我的colSums给了我两个输出,一个是逻辑的,另一个是列本身的名称。 colnames如何只占用colSums的逻辑部分?
test <- data.frame(matrix(rnorm(50), nrow = 5, ncol = 10))
colnames(test) <-c("xOne", "xtwo", "x3", "x4","x5","xsix","x7","x8","xnine","x10")
test$x5[3:4] <-NA
colnames(test)[colSums(is.na(test))>0]
这是colSums(is.na(test))&gt; 0
的输出xOne xtwo x3 x4 x5 xsix x7 x8 xnine x10
FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
答案 0 :(得分:0)
实际上唯一的输出是逻辑向量。您可以忽略这些名称。 不过,如果你不想要这些名字,你可以尝试:
as.logical(is.na(colSums(test)))
请注意我稍微修改了原始功能。
答案 1 :(得分:0)
第一行是names属性,显示哪个命名列对应于每个结果
> attributes(colSums(is.na(test))>0)
$names
[1] "xOne" "xtwo" "x3" "x4" "x5" "xsix" "x7" "x8" "xnine" "x10"