2017-06-27 42 views
3

對不起,如果這看起來像一個菜鳥問題,但它讓我感到困惑:標準是允許您輸入列的部分名稱,它不會拋出錯誤,但基於名稱的「猜測」?例如:鍵入部分列名稱會在該列中產生值

d = data.frame(test = c(1,2,3,4), 
      tmp = c(5,6,7,8), 
      tmp1 = c(9,10,11,12)) 

如果我輸入 'd $ TE' 我得到:

d$te 
[1] 1 2 3 4 

但如果我鍵入:

d$tm 
NULL 

我寧願當我得到一個錯誤輸入d$tes。這是默認行爲,可以更改嗎?

+0

'data.frame'和'data.table'使用非嚴格的子集,但沒有'tibble' –

+1

移動到這個評論,因爲它很可能已經回答,但是:你應該使用'd [[「test」]],因爲'$'做了部分匹配。因此'd [[「tes」]]或'd [[「tm」]]'都返回NULL。 –

+1

您還可以使用'd [,'test']'來強制引用基準R data.frames。 – lmo

回答

2

這是一個已知的'功能'。相反,切換您data.frame到tibble:

library(tibble) 
d <- as_tibble(d) 
d$te 

NULL 
Warning message: 
Unknown or uninitialised column: 'te'.