【问题标题】:Loop for extracting data.frame from list从列表中提取 data.frame 的循环
【发布时间】:2020-04-21 09:39:47
【问题描述】:

我正在尝试使用循环命令修改几个数据帧。

这是我尝试过的:

F.list2 <- list(AUDTTO, BRLTTO, CADTTO, CHFTTO, EURTTO, GBPTTO, JPYTTO, MXNTTO, NZDTTO, RBLTTO, ZARTTO)
res3 <- lapply(
  F.list2, 
  function(x)
  {
    names(x)[names(x) == "Leveraged Funds Longs"] <- "Long"
    names(x)[names(x) == "Leveraged Funds Shorts"] <- "Short"
    select(x, "Date", "Long", "Short")
  }  
)

# ADD THIS PART TO THE LOOP?

AUDTTO <- res3[[1]]
BRLTTO <- res3[[2]]
CADTTO <- res3[[3]]
CHFTTO <- res3[[4]]
EURTTO <- res3[[5]]
GBPTTO <- res3[[6]]
JPYTTO <- res3[[7]]
MXNTTO <- res3[[8]]
NZDTTO <- res3[[9]]
RBLTTO <- res3[[10]]
ZARTTO <- res3[[11]]

正如代码中提到的,我想将最后一部分添加到循环中。

【问题讨论】:

  • F.list3res3 在哪里?
  • 可重现的示例数据对于回答大多数问题至关重要
  • 抱歉,打错字了。

标签: r function dplyr lapply


【解决方案1】:

使用命名列表。

在不更改大部分代码的情况下,这是一种获得预期输出的方法。

F.list2 <- tibble::lst(AUDTTO, BRLTTO, CADTTO, CHFTTO, EURTTO, GBPTTO, 
                       JPYTTO, MXNTTO, NZDTTO, RBLTTO, ZARTTO)

res3 <- lapply(F.list2, function(x){
           names(x)[names(x) == "Leveraged Funds Longs"] <- "Long"
           names(x)[names(x) == "Leveraged Funds Shorts"] <- "Short"
           dplyr::select(x, "Date", "Long", "Short")
         })

res3 现在又是一个命名列表。您可以使用list2env 获取单个数据帧。

list2env(res3, .GlobalEnv)

【讨论】:

  • 完美!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 2014-01-16
相关资源
最近更新 更多