我正在制作一个数据帧列表,如下所示:
simulation_data <- vector( mode = "list", length = length(subgroups_a))
for( A in subgroups_a) {
simulation_data[['A']] <-
paste0(dbGetQuery(conn, "SELECT a, b, c, date FROM t WHERE a = ", A))
}
通常,如何将函数应用于列表中每个数据帧相同的特定列?
我的具体情况是,我需要将ymd()
应用于simulation_data
中每个data.frame的date
列。我目前的工作是每次在for
循环中更新列,如下所示:CCD_ 7,但如果可能的话,我想将其矢量化。
我不知道如何使用lapply
来做到这一点,也许还有更好的解决方案。
谢谢你的帮助。
也许是这样的东西-
DT1 = data.frame(A=20130101:20130103,B=letters[1:3])
DT2 = data.frame(A=20130104:20130105,B=letters[4:5])
l = list(DT1,DT2)
l2 <- lapply(l, function(x) cbind(x,as.Date(as.character(x$A),'%Y%m%d')))
l
的样子-
> l
[[1]]
A B
1 20130101 a
2 20130102 b
3 20130103 c
[[2]]
A B
1 20130104 d
2 20130105 e
l2
看起来像
> l2
[[1]]
A B as.Date(as.character(x$A), "%Y%m%d")
1 20130101 a 2013-01-01
2 20130102 b 2013-01-02
3 20130103 c 2013-01-03
[[2]]
A B as.Date(as.character(x$A), "%Y%m%d")
1 20130104 d 2013-01-04
2 20130105 e 2013-01-05
使用同样的基本方法,您也可以覆盖以前的列,或者指定一个更好的列名,等等。