【问题标题】:R: function to create a list of subset/smaller dataframes from a existing larger dataframe according to dateR:根据日期从现有的较大数据帧创建子集/较小数据帧列表的函数
【发布时间】:2020-06-29 15:21:29
【问题描述】:

我从一个大型数据框开始。我想把它分成更小的数据框。我创建了一个函数来循环执行此操作

这是R中的函数代码

getPortfolios <- function(n) {
  i = 1
  listofdfs <- list()

  for (i in 1:n) {
    df <- data.frame(subset(df_log_returns, mdy(row.names(df_log_returns)) >= var$var[i] & mdy(row.names(df_log_returns)) <= var$var[i]))
    listofdfs[[i]] <- list(df)
  }
  return(listofdfs)
}

当我运行 getPortfolio(1) 并调用 listofdfs[1] 时,我收到错误 Error: object 'listofdfs' not found

当我将其作为一个简单的循环运行时,这尤其令人费解:

listofdfs <- list()
n <- 16
for (i in 1:n) {
  df <- data.frame(subset(df_log_returns, mdy(row.names(df_log_returns)) >= var$var[i] & mdy(row.names(df_log_returns)) <= var$var[i]))
  listofdfs[[i]] <- df
}

listofdfs可以叫...hmmmmm好不解...

【问题讨论】:

  • listofdfs 仅存在于函数范围内,而不是您的全局环境,这与第二个代码块不同。你为什么要注释掉return 行?通常,您会调用:listofdfs &lt;- getPortfolio(1)
  • 啊....我想我说错了...我评论说 return out bc 我正在玩弄发生了什么...

标签: r list dataframe for-loop subset


【解决方案1】:

你应该使用

listofdfs <- getPortfolio(*)`

而不是

getPortfolio(*)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-05-21
    • 2020-04-04
    • 2019-11-13
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多