【问题标题】:Getting Error while doing correlation in R在 R 中进行相关时出错
【发布时间】:2019-04-09 06:47:56
【问题描述】:

我有一个在 R 中提取 CSV 文件的代码。 我有接近 40-50 个变量,我想减少维度以进行进一步分析。 Dataset 中的大多数列都是 INT 、FACTOR 或 NUM。 我的数据框 BO 的类型是列表。 以下代码中的错误是 'Cor(BO) 中的错误:'x' 必须是数字'

heatmap(cor(BO),Rowv = NA,Colv = NA)

【问题讨论】:

  • 您的BO 对象中可能包含因子或字符。
  • 我的数据框中确实有很多因素。这种情况应该怎么办?

标签: r pca


【解决方案1】:

如 cmets 中所述,您的 data.frame 中有非数值,您需要将其排除:

heatmap(cor(BO[, sapply(BO, is.numeric)]),Rowv = NA,Colv = NA)

说明

使用sapply,您可以遍历数据框的所有列(内部存储为list,其中所有元素必须具有相同的长度)并将函数is.numeric应用于列。您将获得所有数字列的逻辑向量。使用此向量,您现在可以选择正确的列。

内置数据集示例

## does not work for the same reason
heatmap(cor(iris))
# Error in cor(iris) : 'x' must be numeric

## works
heatmap(cor(iris[, sapply(iris, is.numeric)]))

【讨论】:

  • 错误:“heatmap(cor(BO[, sapply(BO, is.numeric]”中的意外']')
  • 已修复,忘记了右括号。如果你的代码是完整的,我可以在之前测试过它;)
  • 成功了。谢谢 :) 但我想知道如何使用 PCA 减少数据集中的变量
  • 我正在使用以下命令运行 PCA BO_pca
  • 它会导致以下错误 prcomp.default(BO[, sapply(BO, is.numeric)], center = TRUE, scale = TRUE) 中的错误:无法将常量/零列重新缩放为单位方差
猜你喜欢
  • 2020-06-02
  • 1970-01-01
  • 2016-10-26
  • 2021-12-22
  • 2018-05-20
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多