r - 用于在向量中查找区间总和的 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
功能有什么问题?
解决方案
1:length(x) - 1
应该是1:(length(x) - 1)
。您正在从向量中的每个元素中减去 1。
推荐阅读
- javafx - JavaFX - Child Nodes Overlapping Parent Node (Parent's width smaller than children)
- python-3.x - 将字典键与值进行比较并识别与 python 的不匹配
- cartopy - Cartopy Natural Earth 的metpy.plots 问题
- python - Folium,切换图层时使图例消失(LayerControl)
- javascript - 使用 Python 3 登录和 Web 抓取,但 action='#' 可能还有 Java 脚本
- gcc - 将目标文件合并为一个文件
- c# - 在配置服务之前获取配置值
- maven - 如果依赖项依赖于当前项目的兄弟姐妹,如何使 Maven 构建失败?
- node.js - 具有 2 个值的数组列表并将其放入前 10 名列表
- r - 如何使用 tidyverse map 在 R 中迭代过滤和写入 csv