R小于在不应';T

R小于在不应';T,r,R,我试图在一个数据框中同时对多行进行比较。有时候当我觉得我不应该 df<-data.frame(x=c(1,4,3,4,6,7,4,7,4,2),y=c(8,5,3,7,8,4,1,3,0,2)) df[,c(1,2)]<c(4,5) 对于第1行,这是有意义的。1小于4,8不小于5,所以正确,错误 对于第3行,这是有意义的。3小于4,3小于5,所以两者都是真的 对于第5行,这是有意义的。6不小于4,8不小于5,因此两者都为假 第二排是怎么回事?4不小于4,那么为什么在“x”下有一

我试图在一个数据框中同时对多行进行比较。有时候当我觉得我不应该

df<-data.frame(x=c(1,4,3,4,6,7,4,7,4,2),y=c(8,5,3,7,8,4,1,3,0,2))
df[,c(1,2)]<c(4,5)
  • 对于第1行,这是有意义的。1小于4,8不小于5,所以正确,错误
  • 对于第3行,这是有意义的。3小于4,3小于5,所以两者都是真的
  • 对于第5行,这是有意义的。6不小于4,8不小于5,因此两者都为假
第二排是怎么回事?4不小于4,那么为什么在“x”下有一个真值呢


我是不是遗漏了一些明显的东西?

我们可以用一个
列表来概括,它应该会起作用

df < list(4, 5)

或者另一个方便的选项是
sweep

sweep(df, 2, c(4, 5), `<`)


如果它是一个向量,问题是循环是按列进行的,所以第一个元素4与第一列的第一个值比较,然后5与第一列的第二个值比较,依此类推……

啊,是的,我上面给出的输出是我得到的,而不是我期望的。我想@akrun关于使用列表的回复就可以了!好的,谢谢你的澄清。请检查下面的解决方案。我误判它是预期的酷,谢谢你。list()确实对问题进行了排序。
list
将使每个元素像一个单元一样工作。因此,每个元素的循环都是单独进行的
#          x     y
# [1,]  TRUE FALSE
# [2,] FALSE FALSE
# [3,]  TRUE  TRUE
# [4,] FALSE FALSE
# [5,] FALSE FALSE
# [6,] FALSE  TRUE
# [7,] FALSE  TRUE
# [8,] FALSE  TRUE
# [9,] FALSE  TRUE
#[10,]  TRUE  TRUE
sweep(df, 2, c(4, 5), `<`)
df < c(4, 5)[col(df)]