R:向数据框列表中的列添加不同的值

时间:2011-08-19 16:03:24

标签: list r add dataframe

如果我有一个列表:

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 ...没有任何效果,可能因为我不太明白语法是如何工作的......

1 个答案:

答案 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