【问题标题】:issue with colSums - undefined columns selectedcolSums 问题 - 选择了未定义的列
【发布时间】:2021-04-14 02:57:34
【问题描述】:

抱歉,很难生成可重复的示例,但也许有人可以提供帮助?通常是这样的:

dummied = 30]

可以很好地删除稀疏的虚拟列(列包含 0 和 1)。

在我得到的一些新代码中:

Error in `[.data.frame`(dummied, , colSums(dummied) >= 30): undefined columns selected
Traceback:

1. dummied[, colSums(dummied) >= 30]
2. `[.data.frame`(x, , colSums(dummied) >= 30)
3. stop("undefined columns selected") 

任何想法可能是什么原因?

如果我这样做:

colSums(dummied)

我仍然得到:

col1 1363 col2 635 col3 34 ...

所以 colSums(dummied) 似乎有效。谢谢。

【问题讨论】:

  • 你能检查一下 colSums 是否产生了任何 NA 吗? any(is.na(colSums(dummied)))
  • 谢谢 - 似乎是这样,可能是原因?
  • 是的,使用 NA 向量进行选择不起作用。你可以使用colSums(dummied, na.rm = T)

标签: r


【解决方案1】:

正如 cmets 中所讨论的,您的data.frame 中似乎有NAs,因此您的colSums(dummied) 也有NAs。在具有 NA 的数据框中选择列不起作用。您可以检查:

any(is.na(colSums(dummied)))

如果是这种情况,请考虑为什么在 data.frame 中有 NA。如果这不是内容方面的问题,您可以使用以下方法克服错误:

dummied <- dummied[,colSums(dummied, na.rm = T) >= 30]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-30
    • 2017-12-09
    • 2020-07-29
    • 1970-01-01
    • 2015-12-25
    • 2016-10-29
    • 2016-12-07
    • 1970-01-01
    相关资源
    最近更新 更多