2014-02-13 39 views
0

我試圖運行一個cor函數來做PCA分析。我清楚的數據幀有列名,我試圖在關聯中忽略。我收到一條錯誤消息,指出找不到對象。錯誤`[.data.frame`(ABCD,,-xyz):object'xyz'not found

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

歡迎來到SO,請提供一些可重現的數據。你能顯示一些你的數據?以及導致該錯誤的代碼是什麼? – Ananta

+0

你準確地發佈了哪些命令? –

+0

我已將這些命令添加到上面的文本中。 – vkkumar

回答

0

您不能通過-符號的名稱來刪除列,就像您可以使用數字索引一樣。

但是,您可以使用邏輯索引來按名稱輕鬆刪除列。這裏有一個例子,從iris刪除列Sepal.Width

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 

注意-不使用,列名被引用。

相關問題