和功能是否按顺序一一比较?

时间:2018-09-26 12:26:36

标签: r

对不起,如果这太基础了,但是我想知道R中的sum函数是否将一个向量的第一个值与另一个向量的第一个值进行比较,然后将第一个向量的第二个值与第二个向量的第二个值进行比较第三,等等,还是将第一个元素与第二个向量中的所有元素进行比较,等等。

这是我尝试过的: sum(databef$SD>dataaft$SD, na.rm=TRUE) 应该计算数据库SD的标准偏差databef超过另一个数据库的标准偏差的次数。但我不知道如何进行比较。

2 个答案:

答案 0 :(得分:4)

这与@user.plan = Plan.first @user.save 无关。这是R的基本向量。当您向任何函数传递两侧带有向量的布尔短语时,会将其视为一组比较,按向量本身的顺序逐行进行比较。结果是一个TRUE或FALSE的向量(较长向量的长度相同),然后可以将其求和(T = 1,F = 0)。

答案 1 :(得分:2)

是的,它逐行比较。这是一个示例:

set.seed(123)
databef <- data.frame(SD = sample(1:100, 50, replace = TRUE))
dataaft <- data.frame(SD = sample(1:100, 50, replace = TRUE))
sum(databef$SD > dataaft$SD, na.rm = TRUE)
[1] 30 # this means 30 SD values in databef are greater than SD values in dataaft (row by row)
# A more intuitive way to do it would be:
table(databef$SD > dataaft$SD)
FALSE  TRUE 
   20    30
  

警告:请注意,如果databef和dataaft不相同   长度,将发生回收!

databef <- data.frame(SD = sample(1:100, 50, replace = TRUE))
dataaft <- data.frame(SD = sample(1:100, 30, replace = TRUE)) # 30 obs instead of 50
sum(databef$SD > dataaft$SD, na.rm = TRUE)
[1] 23 # works but you got a warning message
Warning message:
In databef$SD > dataaft$SD :
  longer object length is not a multiple of shorter object length
# or
table(databef$SD > dataaft$SD)
FALSE  TRUE 
   27    23 
Warning message:
In databef$SD > dataaft$SD :
  longer object length is not a multiple of shorter object length