【发布时间】:2012-11-21 19:23:57
【问题描述】:
今天,由于数据帧子集操作,我在代码中遇到了一个错误。我想知道我发现的问题是错误还是违反了 R 语义。
我正在运行带有 R 2.15.2-61015(不给糖就捣蛋)的 RHEL x86_64。我正在使用基本包中的子集操作。
以下代码应该是可重现的,并且它是在为此测试启动的干净的 R 控制台上运行的。
>teste <-data.frame(teste0=c(1,2,3),teste1=c(3,4,5))
>teste0<-1
>teste1<-1
>subset(teste,teste[,"teste0"]==1 & teste[,"teste1"]==1)
[1] teste0 teste1
<0 rows> (or 0-length row.names)
>subset(teste,teste[,"teste0"]==teste0 & teste[,"teste1"]==teste1)
teste0 teste1
1 1 3
2 2 4
3 3 5
但是,如果我在子集操作之外运行逻辑代码:
>teste[,"teste0"]==teste0 & teste[,"teste1"]==teste1
[1] FALSE FALSE FALSE
我希望这两个子集操作都会产生一个空数据帧。但是,第二个返回完整的数据帧。这是一个错误还是我错过了 R 环境和命名空间的一些内容?
感谢您的帮助, 米格尔
【问题讨论】:
-
这绝对不是bug。