我有一个包含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])
我的代码出了什么问题?
答案 0 :(得分:2)
你需要在作业完成后返回整个df。
list <- lapply(list, function(x) {
x[1,] <- x$V1[1]
x
}
答案 1 :(得分:0)
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)