【问题标题】:Error: $ operator is invalid for atomic vectors for matrix错误:$ 运算符对于矩阵的原子向量无效
【发布时间】:2020-07-01 22:23:30
【问题描述】:

这是我的代码:

datTraits = as.matrix(Phenotype[traitRows, ]);
Col_A = as.data.frame(datTraits$Col_A);

Error in datTraits$Col_A : $ operator is invalid for atomic vectors

我正在尝试解决此错误,但找不到解决方案。感谢您的帮助!

【问题讨论】:

    标签: r


    【解决方案1】:

    “datTraits”是matrix。所以$ 不起作用。我们可以使用[

    datTraits[, "Col_A"])
    

    在 OP 的代码中,如果我们使用 as.data.frame,请注意使用 $ 提取,即在 ) 之后

    as.data.frame(datTraits)$Col_A
    

    如果我们有一个包含 5 列的矩阵并且想要对前两列进行子集化

    as.data.frame(datTraits[, 1:2])
    

    如果我们只对单个列进行子集化,为避免丢失维度,请使用drop = FALSE

    out <- as.data.frame(datTraits[, "Col_A", drop = FALSE])
    

    【讨论】:

    • 谢谢!它有效,但在下一步中,names(Col_A)="Col_A。它给出了所有 NA 值,我得到了错误。
    • @Jessican 如果您要创建一个只有“Col_A”的data.frame,请执行data.frame(Col_A = datTraits[, "Col_A"])
    • 我有一个包含五列的数据框,我正在制作带有第一列名称和第二列“Col_A”的 data.frame。您的代码适用于创建 data.frame,但是当我执行名称(Col_A)=“Col_A”时。我仍然得到所有的 NA。
    • @Jessica 如果你有五列,只需子集数据集out &lt;- as.data.frame(datTraits[, c("NAME", "Col_A"), drop = FALSE])
    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 2020-06-21
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多