【发布时间】:2018-06-23 07:06:07
【问题描述】:
我在列表中有 data.frames,通常,当我想使数据居中时,我使用循环(如下例所示)。我想使用“应用”系列的一些功能,但我不知道如何编写代码。
我的数据示例:
env <- list (data.frame(a=c(-1.08, -1.07, -1.07),
b=c( 4.61, 4.59, 4.59),
c=c( 3.46, 3.56, 3.52)),
data.frame(a=c( 3.93, 3.94, 3.92),
b=c(-6.69, -6.72, -6.68),
c=c( 3.04, 3.08, 3.03)))
我将用来使它们居中的值:
d <- c(a=10.20, b=-10.91, c=11.89)
我常用的循环类型:
for(i in 1:length(env)) {
env[[i]][, 1] <- env[[i]][, 1] - d[1]
env[[i]][, 2] <- env[[i]][, 2] - d[2]
env[[i]][, 3] <- env[[i]][, 3] - d[3]
}
有没有办法使用“apply”系列的函数来做我在上面循环中做的同样的事情?
【问题讨论】:
-
很好的可重现示例。顺便提一句。您正在使用的循环可以通过在列上使用内部循环来缩短:
for (j in 1:length(env[[i]])) {env[[i]][, j] <- env[[i]][, j] - d[j]}