我有一个数据框存储不同的值。样例:
a$open a$high a$low a$close
1.08648 1.08707 1.08476 1.08551
1.08552 1.08623 1.08426 1.08542
1.08542 1.08572 1.08453 1.08465
1.08468 1.08566 1.08402 1.08554
1.08552 1.08565 1.08436 1.08464
1.08463 1.08543 1.08452 1.08475
1.08475 1.08504 1.08427 1.08436
1.08433 1.08438 1.08275 1.08285
1.08275 1.08353 1.08275 1.08325
1.08325 1.08431 1.08315 1.08378
1.08379 1.08383 1.08275 1.08294
1.08292 1.08338 1.08271 1.08325
我想要做的是创建一个名为a$mean
的新列,存储每行a$high
和a$low
的平均值。
这是我的实现方法:
highlowmean <- function(highs, lows){
m <- vector(mode="numeric", length=0)
for (i in 1:length(highs)){
m[i] <- mean(highs[i], lows[i])
}
return(m)
}
a$mean <- highlowmean(a$high, a$low)
然而我在R和函数式编程方面还是有些新手,所以我相信有更有效/简单的方法来实现这个目标。
如何以最聪明的方式实现?
mean(c(3, NA), na.rm=TRUE)
和(3+0)/2
。其中,mean(c(3, NA), na.rm=TRUE)
是求一个包含 3 和缺失值的向量的平均值,na.rm=TRUE
表示在计算平均值时忽略缺失值。而(3+0)/2
则是计算 3 和 0 的平均值。 - akrun