【问题标题】:change format of a column in a element of a list with lapply使用 lapply 更改列表元素中列的格式
【发布时间】:2017-12-08 15:18:36
【问题描述】:

我有一个 data.frames 列表,我想更改 data.frame 的一列的类(从因子到日期)。我试图使用 lapply 但是,原始列表只包含该列(而不是整个 data.frame)。我不明白这种行为..为了解决这个问题,我使用了一个通用循环,但我想知道是否有人可以提出任何建议。 比方说,作为一个例子,我有这个简单的数据:

       m1 <- data.frame("date"=c("2010-02-03","2010-01-05"),"value"=c(5,3))
       m2 <- data.frame("date"=c("2010-02-03","2010-01-05"),"value"=c(1,3))
       mylist <- list(m1,m2)
       #change date 
       newlist <- lapply(mylist, function(x) as.Date(x$date))

newlist 将只有日期.. 有什么方法可以使用 lapply 吗?我正在处理大型数据集,通常 lapply 可以正常工作,但在这种情况下,我不知道我做错了什么。

非常感谢。

【问题讨论】:

  • lapply(mylist, transform, date = as.Date(date))
  • 谢谢!我不知道变换,完美。

标签: r


【解决方案1】:

我们可以使用transform

lapply(mylist, transform, date = as.Date(date)) 

【讨论】:

    【解决方案2】:

    在您的函数中,您必须先更改 date 列,然后返回 x

    newlist <- lapply(mylist, function(x) {
        x$date <- as.Date(x$date)
        x
    })
    newlist
    # [[1]]
    #         date value
    # 1 2010-02-03     5
    # 2 2010-01-05     3
    # 
    # [[2]]
    #         date value
    # 1 2010-02-03     1
    # 2 2010-01-05     3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2021-12-10
      • 2016-02-07
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多