在子集化数据帧中禁用部分变量名称

时间:2016-10-04 01:58:02

标签: r

我刚刚发现R允许我使用部分变量名称来子集数据帧,只要它们是唯一定义的。我发现这很危险,我想知道是否有一种方法(如环境变量或其他东西)来禁用此行为。

这就是我的意思:

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

[1] 4 5 6

我想要发生的事情与

相同
print(myframe$wrong)

NULL

有什么方法可以改变这个吗?

1 个答案:

答案 0 :(得分:3)

不,不是真的。您可以使用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
相关问题