【发布时间】:2016-05-09 14:13:50
【问题描述】:
请检查下面的示例代码,我在其中创建了具有一些 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))>0 的输出
xOne xtwo x3 x4 x5 xsix x7 x8 xnine x10
FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
【问题讨论】:
-
你看到的是一个带有名称属性的逻辑向量。见
str(colSums(is.na(test))>0) -
是的,正如文档所说,它仍然只返回一个逻辑值向量。它只是一个命名向量,所以这就是您看到输出的原因。这不会影响您的矢量,它只是矢量的一个特征,您可以为每个项目命名。
-
谢谢两位。我现在知道逻辑向量的名称特征,以前不知道。
标签: r