2016-10-04 6 views
1

データフレームが部分的に定義されている限り、部分的な変数名を使用してデータフレームをサブセット化することが可能になりました。私はこれが危険であると判断し、この動作を無効にする方法(環境変数など)があるかどうか疑問に思っています。ここでデータフレームのサブセット設定で部分変数名を無効にする

は、私が何を意味するかです:

myframe <- data.frame(othervar=1:3, myvar=4:6) 
print(myframe$myv) 

[1] 4 5 6 

私は起こるしたいと思いますこれは何を変更する方法

print(myframe$wrong) 

NULL 

と同じですか?

答えて

2

いいえ、実際はありません。 options(warnPartialMatchDollar=TRUE)を使用して警告を発することができます(私はr-develを使用しています)。これはリリース版です??)、options(warn=2)を使用して警告をエラーにアップグレードできます)...エラーに

すべての警告をアップグレードするだろう、私は、標準的なアドバイス/ベストプラクティスではなく

myframe <- data.frame(othervar=1:3, myvar=4:6) 
myframe$myv 
## [1] 4 5 6 (no problem) 
myframe$wrong 
## NULL 

options(warnPartialMatchDollar=TRUE) 
myframe$myv 
## [1] 4 5 6 
## Warning message: 
## In `$.data.frame`(myframe, myv) : 
## Partial match of 'myv' to 'myvar' in data frame 
options(warn=2) ## upgrade warnings to errors 
myframe$myv 
## Error in `$.data.frame`(myframe, myv) : 
## (converted from warning) Partial match of 'myv' to 'myvar' in data frame 

myframe[["myv"]] 
## NULL 
+0

エイ、ベン-indexing [[を使用することであると信じています。このオプションは数年前からありました。 – hrbrmstr

+0

よかった、素晴らしい。実際には警告が十分です。 Zheyuan、グローバルオプションを変更するコードスニペットを教えてください。 –

+1

気にしないでください。わかった。私は 'options(warnPartialMatchDollar = TRUE)'を.Rprofileに入れました。 –

関連する問題