R Colnames和Colsums将逻辑转换为数字

时间:2016-05-09 14:13:50

标签: r

请检查我下面的示例代码,其中我创建了一个具有一些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

2 个答案:

答案 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"