Map中的Map?使用两个数据帧列表中的列

问题描述 投票:0回答:1

我正在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
1个回答
0
投票

我们可以使用merge

© www.soinside.com 2019 - 2024. All rights reserved.