从“环境”到“列表”

From the `environment` to a `list`

我有一组以 .fin 结尾的数据集。我想创建一个列表并使用

合并它们
ls(pattern = ".fin")
"A.fin" "B.fin" "C.fin" "D.fin" "E.fin" "F.fin" "G.fin" "H.fin" "I.fin"
"J.fin" "K.fin" "L.fin" "M.fin" "N.fin"

我想从上面的行和代码转到下面以 list 开头的行,例如 list(ls(pattern = ".fin"));然而,这只是 returns 数据集名称列表中的一个向量。我也尝试过使用 list(get(ls(pattern = ".fin"))list(eval(parse(text = ls(pattern = .fin)))) 但无济于事。

list(ls(pattern = ".fin")) ### <- REPLACE THIS SOMEHOW  %>%
Reduce(function(dtf1,dtf2) full_join(dtf1,dtf2,by="i"), .)

您可以使用 mget:

mget(ls(pattern = ".fin"))

A.fin <- c(1,2,3)
B.fin <- c(4,5,6)

mget(ls(pattern = ".fin"))
#$A.fin
#[1] 1 2 3

#$B.fin
#[1] 4 5 6

get 未矢量化,因此您应该 "loop" 覆盖 ls() 返回的任何内容。你也可以这样做

sapply(ls(pattern = ".fin"), FUN = get)

或长途

xy <- ls(pattern = ".fin")
mylist <- vector("list", length(xy))

for (i in 1:length(mylist)) {
  mylist[[i]] <- get(xy[i])
}

或使用mget(ls(pattern = ".fin")).