【发布时间】:2020-09-16 12:08:48
【问题描述】:
我在 R 中工作,有两个数据框列表。我需要向 list1 中的数据框添加一列,填充从 list2 中相应数据框获取的值。我想我需要 Map 内的 Map 或 Map 内的 lapply,但我只使用过 Map 和 lapply 自己,或 lapply 内的 lapply,所以我无法对正确的代码进行排序。以下列表与我正在使用的列表类似。
dfa<-data.frame(tom=sample(seq(as.Date("2020-01-01"),as.Date("2020-03-01"), 1), 20), id=seq(1:20))
dfb<-data.frame(tom=sample(seq(as.Date("2020-01-01"),as.Date("2020-02-01"), 1), 32), id=seq(1:32))
list1<-list(dfa, dfb)
df1<-data.frame(date=seq(as.Date("2020-01-01"), as.Date("2020-03-01"), 1),num=sample(1:200, 61))
df2<-data.frame(date=seq(as.Date("2020-01-01"), as.Date("2020-03-01"), 1),num=sample(4:200, 61))
list2<-list(df1, df2)
我尝试过的代码可能接近或完全偏离标准。我正在尝试将新列“d1”添加到 list1 中的所有数据框。 d1 中的值应从 list2 的数据帧中的变量“num”中提取,其中日期与 list1 中数据帧的日期匹配。
list3<-Map(function(x, y){
Map(function(v, w){
v<-cbind(v, d1=w[w$date==v, w$num])}, x$tom, y)},list1, list2)
这只是返回有关使用原子向量的错误:“w$date 中的错误:$ 运算符对原子向量无效”
但如果我将其更改为索引...
list3<-Map(function(x, y){
Map(function(v, w){
v<-cbind(v, d1=w[w[,1]==v, w[,2]])}, x$tom, y)}, list1, list2)
也不高兴:“[.default(w, , 1) 中的错误:维数不正确”
到目前为止,我有点忘记了我在最里面的函数中要引用的内容以及如何正确引用它。这甚至接近我想要的吗?
【问题讨论】:
标签: r dictionary lapply mapply