首页 > 解决方案 > 用于在向量中查找区间总和的 R 函数神秘地返回数字(0),但手动工作正常

问题描述

我创建了以下函数来查找排序数字向量中所有区间的总和:

sum.intervals <- function(x){
        x <- sort(x)
        acc <- 0
        for( i in 1:length(x) - 1 ){
            acc <- acc + x[i + 1] - x[i]
        }
        return(acc)
    }

尝试使用它时,我期望一个标量值,而是得到numeric(0)

x <- c(5, 2, 7, 3)
y <- sum.intervals(x)
y
#numeric(0)

但是,当手动执行迭代时,这个想法可以正常工作:

x <- sort(x)
acc <- 0

i <- 1
acc <- acc + x[i + 1] - x[i]

i <- 2
acc <- acc + x[i + 1] - x[i]

i <- 3
acc <- acc + x[i + 1] - x[i]

acc
#5

功能有什么问题?

标签: rfunction

解决方案


1:length(x) - 1应该是1:(length(x) - 1)。您正在从向量中的每个元素中减去 1。


推荐阅读