`[.data.frame`(ABCD ,, -xyz)出错:找不到对象'xyz'

时间:2014-02-13 04:05:59

标签: r pca

我正在尝试运行cor函数来进行PCA分析。我明确的数据框有列名,我试图忽略相关性。我收到一条错误消息,指出找不到该对象。

Error in `[.data.frame`(ABCD, , -xyz) : object 'xyz' not found

在上面的示例中,'xyz'是列名。我应该做些什么?

我正在尝试从“HSAUR”包中提供的数据集中学习,称为七项全能。

> head(heptathlon)
                    hurdles highjump  shot run200m longjump javelin run800m score
Joyner-Kersee (USA)   12.69     1.86 15.80   22.56     7.27   45.66  128.51  7291

列“得分”是第八列,我在运行时收到错误:

> round(cor(heptathlon[,-score]), 2)
Error in `[.data.frame`(heptathlon, , -score) : object 'score' not found

如果我用列号替换列名,它似乎有效。显然,我不能将这种方法用于大型数据集。

1 个答案:

答案 0 :(得分:0)

您不能使用-符号按名称删除列,就像使用数字索引一样。

但是您可以使用逻辑索引轻松地按名称删除列。这是一个示例,从Sepal.Width

中删除列iris
head(iris, 2)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa

i <- iris[,names(iris) != 'Sepal.Width']
head(i, 2)
  Sepal.Length Petal.Length Petal.Width Species
1          5.1          1.4         0.2  setosa
2          4.9          1.4         0.2  setosa

请注意,未使用-,并且引用了列名称。