对于listA中的每个元素的列< - 列表中的对应元素

时间:2014-04-24 09:57:38

标签: r list vector dataframe apply

我有两个列表,一个由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这样做的方法?任何指针都会受到高度赞赏,谢谢!

1 个答案:

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