lapply - 将特定值分配给data.frames中同一行中的其他列

时间:2016-10-19 14:36:56

标签: r dataframe lapply

我有一个包含100多个data.frames的列表,每个都有3列。

这里有一个data.frames的例子:

[[6]]
             V1        V2        V3
2         12002                    
9   05 Jan 1974   404.074     2.940
10  12 Jan 1974   477.433     3.235
11  18 Jan 1974   443.135     3.099
12  30 Jan 1974   556.402     3.537
13  22 Nov 1974   534.586     3.455

我想要做的是将第一列的第一行值复制到另外两列中的另外两个第一行值。

我的结果,对于列表中包含的所有data.frames应该是:

[[6]]
             V1        V2        V3
2         12002     12002     12002         
9   05 Jan 1974   404.074     2.940
10  12 Jan 1974   477.433     3.235
11  18 Jan 1974   443.135     3.099
12  30 Jan 1974   556.402     3.537
13  22 Nov 1974   534.586     3.455

n.b。要复制的值对于每个data.frame

是不同的

我首先尝试为一个data.frame(不使用lapply)执行此操作并且它确实有效:

list[[1]]$V2[1] = list[[1]]$V1[1]

但是当我尝试使用lapply功能时,它不再起作用了:

list = lapply(list, function(x) x$V2[1] = x$V1[1])

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

你需要在作业完成后返回整个df。

list <- lapply(list, function(x) {
    x[1,] <- x$V1[1]
    x
}

答案 1 :(得分:0)

与emilliman5相同,这是一个例子

d <- data.frame(x = 1:3, y = 4:6)
l <- list(d, d)
do_this <- function(dat) {
  dat[1,2] <- dat[1,1]
  return(dat)
}
lapply(l, do_this)