R 在df名称中使用索引

R 在df名称中使用索引,r,for-loop,merge,R,For Loop,Merge,我试图在两列的交点上合并10个数据帧。我需要它返回25个数据帧 我有五个股票投资组合:ME_1、ME_2、…、ME_5,同样还有五个投资组合:BM_1、BM_2、…、BM_5 R不会将BM_[i]识别为例如BM_1 for(i in 1:5) { for(j in 1:5) { pf <- paste("bm_", i, "me_", j, sep ="") assign(pf, merge(x=BM_[i], y=ME_[j], b

我试图在两列的交点上合并10个数据帧。我需要它返回25个数据帧

我有五个股票投资组合:ME_1、ME_2、…、ME_5,同样还有五个投资组合:BM_1、BM_2、…、BM_5

R不会将BM_[i]识别为例如BM_1

for(i in 1:5) {
    for(j in 1:5) {
            pf <- paste("bm_", i, "me_", j, sep ="")
            assign(pf, merge(x=BM_[i], y=ME_[j], by = c("date", "tick")))

            pf <- pf %>%
                    arrange(tick, date) %>%
                    group_by(date_year.x) %>%
                    mutate(W = MVE_jun/sum(MVE_jun))
    }
}

原因是没有
BM
dataset。我们需要
BM_1
BM_2
而不是使用不存在的对象对列进行子集设置,使用
paste
将获取字符对象名称,然后使用
get
提取存储在该对象中的值

for(i in 1:5) {
   for(j in 1:5) {
        pf <- paste("bm_", i, "me_", j, sep ="")
        assign(pf, merge(x=get(paste0("BM_", i)),
               y=get(paste0("ME_", j)), by = c("date", "tick")))

        pf <- pf %>%
                arrange(tick, date) %>%
                group_by(date_year.x) %>%
                mutate(W = MVE_jun/sum(MVE_jun))
  }
}
for(1:5中的i){
对于(1:5中的j){
pf%
分组依据(日期x年)%>%
变异(W=MVE_-jun/总和(MVE_-jun))
}
}

注意:如注释中所述,
paste
是矢量化的,因此无需调用
paste
multipie times

谢谢,这似乎适用于第一部分,并执行了正确的合并,但现在代码的最后一部分不起作用。我玩过它,我不知道我在循环中dplyr中使用pf的方式是否有问题?我在UseMethod(“arrange_uu”)中得到错误:“arrange_u”没有适用于类“character”@claushojmark”的对象的方法。您需要提供一个小的可复制示例,并在您的帖子中更新它,以供其他人测试
for(i in 1:5) {
   for(j in 1:5) {
        pf <- paste("bm_", i, "me_", j, sep ="")
        assign(pf, merge(x=get(paste0("BM_", i)),
               y=get(paste0("ME_", j)), by = c("date", "tick")))

        pf <- pf %>%
                arrange(tick, date) %>%
                group_by(date_year.x) %>%
                mutate(W = MVE_jun/sum(MVE_jun))
  }
}