從Data.frame中刪除列時,我遇到了一個奇怪的行爲。起初,我有:奇怪行爲從R中的data.frame中刪除列
> a <- data.frame("a" = c(1,2,3), "abc" = c(3,2,1)); print(a)
a abc
1 1 3
2 2 2
3 3 1
現在,我從data.frame
> a$a <- NULL; print(a)
abc
1 3
2 2
3 1
正如預期的那樣刪除a$a
,我只有abc
我data.frame列。但奇怪的部分開始,當我嘗試引用刪除列a
。
> print(a$a)
[1] 3 2 1
> print(is.null(a$a))
[1] FALSE
它看起來如R返回a$abc
代替NULL
的價值。
發生這種情況時,剩餘列的名稱的開頭與刪除列的名稱完全匹配。
這是一個錯誤還是我錯過了這裏的東西?
你是rigth @Chase,雖然問題的標題不是最好的搜索。 –
@lselzer - 我當然同意。自從我回答以來,我只知道它存在。 JD修正了這個問題,我會去相應地更新其他問題。或者他們應該被合併...或者其他東西。 – Chase
這只是R試圖聰明,猜測你的意思。它指出「a $ a」意味着「$ abc」,因爲這是唯一可能的選擇。這對'a < - data.frame(「a」= c(1,2,3),「b」= c(3,2,1))不起作用。一個$ a < - NULL; is.null(A $ A)'。在這種情況下,這只是偶然的,因爲兩列都以'a'開頭。 –