我有两个列表,一个由data.frames和一个与data.frames长度相同的字符向量组成。我想在列表X1
中交换/覆盖列ls.df
以获取ls.v
中的相应字符向量。基本上为df$X1 <- v
,但对于列表中的每个项目。感觉很简单,但我无法绕过它。
#dummy data
df1 <- data.frame(rbind(c(1,'A'),c(2,'B'),c(3,'C'),c(4,'D'),c(5,'E'),c(6,'F')))
df2 <- data.frame(rbind(c(1,'A'),c(2,'B'),c(3,'C')))
df3 <- data.frame(rbind(c(4,'D'),c(5,'E'),c(6,'F')))
ls.df <- list(df1, df2, df3)
v1 <- c('a','b','c','d','e','f')
v2 <- c('a','b','c')
v3 <- c('d','e','f')
ls.v <- list(v1, v2, v3)
是否有例如apply-like
这样做的方法?任何指针都会受到高度赞赏,谢谢!
答案 0 :(得分:2)
您可以使用mapply
。
列表:
ls.df <- list(df1, df2, df3)
ls.v <- list(v1, v2, v3)
解决方案:
mapply("[[<-", ls.df, value = ls.v, MoreArgs = list(1L), SIMPLIFY = FALSE)
结果:
[[1]]
X1 X2
1 a A
2 b B
3 c C
4 d D
5 e E
6 f F
[[2]]
X1 X2
1 a A
2 b B
3 c C
[[3]]
X1 X2
1 d D
2 e E
3 f F