【问题标题】:Subset columns in R dataframe issue?R数据框问题中的子集列?
【发布时间】:2018-05-18 03:49:53
【问题描述】:

我有一个数据框 df,我想通过以下方式对其进行子集化:

第 1-7 列和列 cols 的向量:

cols = c("rs1057079", "rs1057079.1", "rs4845882", "rs4845882.1", "rs1891932", "rs1891932.1", "rs530296", "rs530296.1", "rs10497340", "rs10497340.1")

所以我所做的是 df[, c(1:7, cols)] 但 R 抛出一个错误:

Error in `[.data.frame`(df, , c(seq(1:7), SNPs_dup)) : 
  undefined columns selected

这里有什么问题??我可以在 1:7 和 cols 上设置子集,但为什么不能同时使用它们?

【问题讨论】:

    标签: r dataframe subset


    【解决方案1】:

    c(1:7, cols) 将序列1:7 强制转换为被进一步视为列名'1', '2' ... 而不是列位置的字符,您可以提取1-7 列名,然后与cols 和子集连接:

    df[,c(names(df)[1:7], cols)]
    

    或将cols 转换为职位:

    df[,c(1:7, match(cols, names(df)))]
    

    【讨论】:

    • 我明白了,但是如何避免 c() 这样做呢?这是唯一的办法吗?
    • 您不能阻止c 这样做,因为它会生成一个必须具有相同数据类型的原子向量。我为此提供了另一种方法。
    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2016-11-04
    • 2012-11-18
    • 2018-11-24
    • 1970-01-01
    • 2020-11-21
    • 2015-10-04
    • 2018-11-18
    相关资源
    最近更新 更多