如果我有一个列表:
list <- list( "1" = data.frame(time=1:3, temp = sample(11:13)),
"3" = data.frame(time=1:3, temp = sample(11:13)))
list
$`1`
time temp
1 1 11
2 2 12
3 3 13
$`3`
time temp
1 1 11
2 2 12
3 3 13
现在我想为列temp添加一个修正值,为数据帧1添加+1,为数据帧3添加-1,所以结果为:
$`1`
time temp
1 1 12
2 2 13
3 3 14
$`3`
time temp
1 1 10
2 2 11
3 3 12
让我们另外假设我有多个这样的列表,有时候数据帧3或1可能会丢失,甚至可能包含数据帧2,这需要自己的校正因子...... 我为数据帧1尝试了一些奇怪的事情:
list <- lapply(list, function(x) {x <- x$"1"$temp-1;x})
或
list <- lapply(list, function(x) {x <- x[x$temp+1,];x})
还尝试为列表中的其他数据帧添加seq_along ...没有任何效果,可能因为我不太明白语法是如何工作的......
答案 0 :(得分:2)
我将数据结构的名称更改为dflist。调用列表“列表”是错误的。你还需要一些数据结构来引入相关的校正因子,所以让我们假设一个与“dflist”相同的名称:
dflist <- list( "1" = data.frame(time=1:3, temp = sample(11:13)),
"3" = data.frame(time=1:3, temp = sample(11:13)))
corrlist <- list("1" = 1, "3"=-1)
# Replaced lapply with for loop
for( nam in names(dflist)) {
dflist[[nam]]['temp'] <- dflist[[nam]]['temp'] +corrlist[[nam]]
}
dflist