r - 项目未正确添加到 r 中的预分配向量
问题描述
我正在尝试将数据添加到预先分配的列表中,但它只工作了一半。
x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(0.5,1,1.5,2,2.5,3,3.5,4,4.5,5)
x_num <- rep(0,length(x))
y_num <- rep(0,length(y))
for (i in x){
x_diff <- i - mean(x)
print(x_diff)
x_num[i] <- x_diff
}
[1] -4.5
[1] -3.5
[1] -2.5
[1] -1.5
[1] -0.5
[1] 0.5
[1] 1.5
[1] 2.5
[1] 3.5
[1] 4.5
> x_num
[1] -4.5 -3.5 -2.5 -1.5 -0.5 0.5 1.5 2.5 3.5 4.5
for (i in y){
y_diff <- i - mean(y)
print(y_diff)
y_num[i] <- y_diff
}
[1] -2.25
[1] -1.75
[1] -1.25
[1] -0.75
[1] -0.25
[1] 0.25
[1] 0.75
[1] 1.25
[1] 1.75
[1] 2.25
> y_num
[1] -1.25 -0.25 0.75 1.75 2.25 0.00 0.00 0.00 0.00 0.00
为 x_diff 和 y_diff 计算了正确的值,但只有 x_num 被正确填充。我在这里缺少什么吗?
解决方案
您需要元素编号,因此您可能想要使用seq_along
和子集y[i]
for (i in seq_along(y)){
y_diff <- y[i] - mean(y)
print(y_diff)
y_num[i] <- y_diff
}
# [1] -2.25
# [1] -1.75
# [1] -1.25
# [1] -0.75
# [1] -0.25
# [1] 0.25
# [1] 0.75
# [1] 1.25
# [1] 1.75
# [1] 2.25
y_num
# [1] -2.25 -1.75 -1.25 -0.75 -0.25 0.25 0.75 1.25 1.75 2.25
但是,R 是矢量化的,所以你可以这样做
y - mean(y)
# [1] -2.25 -1.75 -1.25 -0.75 -0.25 0.25 0.75 1.25 1.75 2.25
推荐阅读
- jsoup - Jsoup 返回状态码 405(但它应该接受 POST)
- angular - 离子 4 的多个吐司
- arduino - 继电器 NC NO 引脚是否有不同的容量?
- angular - 对数据库的全局访问不起作用
- ssl - 从多个受信任的 CA 提供商处请求 ssl 证书是否会产生负面影响?
- sql - 如何将子查询结果(具有嵌套连接)与另一个表连接?
- vb.net - 嵌套列表/列表集合
- java - 出现键盘时 ScrollView 不起作用
- javascript - 如何将数据从一个html页面传递到另一个?
- python - 自定义 Spacy NER 模型的总体 F 分数与单个实体 F 分数之间的巨大差异