【问题标题】:R Make Nested List From Data.FrameR从Data.Frame制作嵌套列表
【发布时间】:2017-12-06 01:11:25
【问题描述】:

使用 R 基础,我想将 data.frame 转换为嵌套列表,同时保持数据名称不变。下面是我的示例代码。谢谢。

#I WOULD LIKE TO SIMPLIFY THIS PROCESS
DF <- expand.grid(NAME = c("FRANK", "TONY", "ED"), DATE = seq(as.Date("2014-01-01"), as.Date("2017-12-31"), by = "day"), NUM = c(1:3))
DF <- list(
    lapply(2014:2015, function(t) DF[with(DF, as.Date(paste(t, "01", "01", sep = "-")) <= DATE & DATE <= as.Date(paste(t + 1, "06", "30", sep = "-"))), ]),
    lapply(2014:2015, function(t) DF[with(DF, as.Date(paste(t, "01", "01", sep = "-")) <= DATE & DATE <= as.Date(paste(t + 2, "06", "30", sep = "-"))), ]),
    lapply(2014:2015, function(t) DF[with(DF, as.Date(paste(t, "01", "01", sep = "-")) <= DATE & DATE <= as.Date(paste(t + 3, "06", "30", sep = "-"))), ])
)

#BUT THIS DOES NOT WORK
DF <- expand.grid(NAME = c("FRANK", "TONY", "ED"), DATE = seq(as.Date("2014-01-01"), as.Date("2017-12-31"), by = "day"), NUM = c(1:3))
DF <- lapply(1:3, function(i) DF[[i]] <- lapply(2014:2015, function(t) DF[with(DF, as.Date(paste(t, "01", "01", sep = "-")) <= DATE & DATE <= as.Date(paste(t + i, "06", "30", sep = "-"))),]))

#YET THIS WORKS WITH A NEW NAME
DF <- expand.grid(NAME = c("FRANK", "TONY", "ED"), DATE = seq(as.Date("2014-01-01"), as.Date("2017-12-31"), by = "day"), NUM = c(1:3))
DF.NEW <- list()
DF.NEW <- lapply(1:3, function(i) DF.NEW[[i]] <- lapply(2014:2015, function(t) DF[with(DF, as.Date(paste(t, "01", "01", sep = "-")) <= DATE & DATE <= as.Date(paste(t + i, "06", "30", sep = "-"))),]))

【问题讨论】:

  • 对我不起作用:object 'DATE' not found
  • object DATE not found,您的代码有错误。你不能提供一个更小的例子吗?否则,DF[[i]] &lt;- 看起来毫无用处。

标签: r list dataframe nested


【解决方案1】:

您不需要DF.NEWDF[[i]] &lt;- lapply(...)。做吧

DF <- lapply(1:3, function(i)
    lapply(2014:2015, function(t)
    DF[with(DF, as.Date(paste(t, "01", "01", sep = "-")) <= DATE & DATE <=   as.Date(paste(t + i, "06", "30", sep = "-"))),]))

【讨论】:

    猜你喜欢
    • 2020-10-29
    • 2015-02-03
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    相关资源
    最近更新 更多