【发布时间】:2021-08-16 17:34:21
【问题描述】:
我有一个包含多个数据框的列表,它们都有一个名为“year”的变量。如何使用 lapply 检查每个数据框中的年份类别?
【问题讨论】:
我有一个包含多个数据框的列表,它们都有一个名为“year”的变量。如何使用 lapply 检查每个数据框中的年份类别?
【问题讨论】:
我们可以通过循环list 来提取“年份”列并检查它的class。使用sapply,它返回一个vector,如果我们使用lapply,它将是一个list 输出
sapply(lst1, function(x) class(x$year))
使用R 4.1.0,lambda函数可以很紧凑
sapply(lst1, \(x) class(x$year))
【讨论】:
anytime中的anydate
下面是一个例子:
numeric
year 列更改为character
# example data:
df_list <- list(df1 = data.frame(year = c(2018, 2020, 2021)),
df2 = data.frame(year = c(1989, 1988, 1977)))
# check class (same as akruns just using lapply)
lapply(df_list, function(x) class(x$year))
# change the class of year columns in all dataframe to character
list1 <- lapply(df_list, function(x) mutate_at(x, "year", as.character))
# check again
lapply(list1, function(x) class(x$year))
输出:
> lapply(df_list, function(x) class(x$year))
$df1
[1] "numeric"
$df2
[1] "numeric"
>
> list1 <- lapply(df_list, function(x) mutate_at(x, "year", as.character))
>
> lapply(list1, function(x) class(x$year))
$df1
[1] "character"
$df2
[1] "character"
【讨论】: