R中的Bug与子集

时间:2014-10-13 11:59:03

标签: r

我在尝试获取初始数据帧的子集时遇到了一些麻烦,因为它最终破坏了我的数据帧!以下是正在发生的事情的一个例子:

考虑一个数据帧:

>test=data.frame("v1"=c(1,2,3,4,-5,-3),"v2"=c(1,2,3,4,5,6))
> print(test)
  v1 v2
1  1  1
2  2  2
3  3  3
4  4  4
5 -5  5
6 -3  6

然后我想采用var1值严格低于的子集,比方说-2:

> subtest=test[test$v1<-2,]
> print(subtest)
  v1 v2
2  2  2
> print(test)
  v1 v2
1  2  1
2  2  2
3  2  3
4  2  4
5  2  5
6  2  6

不仅子集操作不起作用,而且实际上通过将所有v1值替换为2来破坏我的初始数据库!

2 个答案:

答案 0 :(得分:3)

这不是一个错误。你只需要放括号,否则它将是赋值标记<-。如果你想严格低于-2:

subtest=test[test$v1<(-2),]

答案 1 :(得分:3)

我不是一个错误。这只是一个错字!

运算符<-用于分配值。在命令subtest=test[test$v1<-2,]中,您已将变量v1的所有值分配给2

要做你想做的事,你应该这样做:

subtest=test[test$v1< -2,]