【发布时间】:2016-01-04 20:42:54
【问题描述】:
尝试计算一行中每两个值之间的差异,然后将列表中每个数据帧的总差异相加。我知道 R 中的 for/while 循环非常糟糕。我以前有这个工作,但我把它弄坏了。有人可以建议如何使用 apply 系列中的替代方法来优化它吗?当前代码:
for (i in 1:length(refdata)) { #for each dataframe in a list
refdif <- as.data.frame(matrix(0, ncol = 1, nrow = nrow(refdata[[i]])))
refdif1 <- c()
for (z in 1:ncol(refdata[[i]])) { #for each column in a dataframe
for(x in 1:nrow(refdata[[i]])) { #for each row in a dataframe
refdif <- (refdata[[i]][x,z] - refdata[[i]][x,z+1]) #difference of first value + the enxt
refdif1[x,1] <- (refdif1[x,1] + refidf) #sum of latest difference
}
}
print(refdif1) #where I can conduct tests on each individual dataframe with a column of sums of differences
}
示例数据: 列表 1 参考数据[[1]]
$`1`
var1 var2 var3 var4
1 1 2 3 4
2 5 6 7 8
$`2`
var1 var2 var3 var4
1 1 2 3 4
2 5 6 7 8
var 1 + 2 计算出差异,var 3 和 4 计算出差异,然后将每个差异相加并放在一个新数据框中的单列中。 (5-6) + (7-8), (1-2) + (3-4) 等等:
$`1`
dif
1 -2
2 -2
$`2`
dif
1 -2
2 -2
【问题讨论】:
-
这将极大地受益于样本数据列表。
-
@MichaelChirico 已更新