【问题标题】:Select columns of dataframe filling with NA's in selected column doesn't exist在所选列中填充 NA 的数据框的选择列不存在
【发布时间】:2014-11-04 09:53:35
【问题描述】:

以这个数据框为例

temp <- data.frame('a' = 1:3, 'b' = 4:6, 'd' = 7:9)

我想使用列名向量对这个数据框进行子集化,但是如果该向量包含数据框中不存在的任何列,我希望它们仍然被返回,但作为 NA。

所以如果我的向量是

colVec <- c('a', 'b', 'c')

我想按照以下方式运行一些东西

subset(temp, select = colVec)

得到

a b c
1 4 NA
2 5 NA
3 6 NA

【问题讨论】:

  • 只需执行temp[,colVec[colVec %in% names(temp)]],如果您真的想添加NA 列(为什么?)然后使用!NA 附加到缺少的列名称.

标签: r select dataframe subset na


【解决方案1】:

您可以分两步执行此操作 - 限制在数据框中的请求列,然后添加不在数据框中的请求列。您可以使用intersectsetdiff 来获取这两组列名:

temp2 <- temp[intersect(colVec, names(temp))]
temp2[setdiff(colVec, names(temp))] <- NA
temp2
#   a b  c
# 1 1 4 NA
# 2 2 5 NA
# 3 3 6 NA

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2021-07-02
    相关资源
    最近更新 更多