【问题标题】:Does the sum function compare one by one in order?sum函数是否按顺序一一比较?
【发布时间】:2018-09-26 12:26:35
【问题描述】:

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

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

【问题讨论】:

  • sum函数将一个向量中的所有值相加,没有比较?!
  • 你尝试了什么?另见:How to Ask
  • 试试这个:x <- 1:10; y <- 11:20; sum(x, y); x + y 自己总结
  • @ANG 抱歉,我已对我的问题进行了一些澄清。我想计算 databef 的 SD 大于另一个的次数。但它是否逐行计算?意思是,databef 的第一个 SD 与 dataaft 的第一个 SD 等等。或者 databef 的第一个 SD,与 dataaft 的所有 SD?
  • 也阅读有关回收的信息。试试看:sum(1:2 == 1:3)

标签: r


【解决方案1】:

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

【讨论】:

    【解决方案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
    

    【讨论】:

    • “逐行”没有意义,dataaft$SD 是一个数字向量。
    • 我只是使用“逐行”来让 OP 通过使用与他/她相同的词来理解。所以你是对的,这都是关于回收的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多