使用 lapply 更改列表元素中列的格式

Posted

技术标签:

【中文标题】使用 lapply 更改列表元素中列的格式【英文标题】:change format of a column in a element of a list with 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)) 谢谢!我不知道变换,完美。 【参考方案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

【讨论】:

以上是关于使用 lapply 更改列表元素中列的格式的主要内容,如果未能解决你的问题,请参考以下文章

更改数据框中列的元素并合并列

使用 R [重复] 更改数据框中列的顺序

更改增量表中列的数据类型

如何更改JTable中列的名称

如何使用 Pyarrow 更改镶木地板文件中列的名称?

更改数据库中列的数据类型