将一些函数应用于列表中的数据框列

Posted

技术标签:

【中文标题】将一些函数应用于列表中的数据框列【英文标题】:Apply some functions to the column of dataframes in the list 【发布时间】:2019-10-06 23:20:21 【问题描述】:

我知道我们可以使用 apply 或 lapply 来做 for 循环在 R 中可以做的事情。如果你有一个数据框,你可以使用 apply (dataframe,2,mean) 来计算列的平均值但是如果我们有数据框列表并且我需要通过删除第一列并将数据框转换为数字来进行以下调整。 假设数据帧列表是 LIST,其中 LIST[[1]] 是第一个数据帧。

如何在数据框列表上使用 lapply 来一次执行上述操作。我如何使用 lapply 对列表内的数据框进行操作,因为

lapply(LIST, function (x) some function)

将操作应用于列表而不是数据框。并且以下没有任何意义:

lapply(LIST[], function (x) some function) 

【问题讨论】:

【参考方案1】:

我们可以遍历list,通过删除第一列对数据集的列进行子集化,遍历该子集,转换为numeric,将输出分配给数据集,然后返回该数据集

lapply(LIST, function(x) x[-1] <- lapply(x[-1], as.numeric); x[-1])

或者其他选项是

lapply(LIST, function(x) data.frame(lapply(x[-1], as.numeric)))

另外,如果需要根据类型进行转换,更简单的选择是type.convert,可以在data.frames上应用

lapply(LIST, type.convert)

或使用tidyverse

library(dplyr)
library(purrr)
map(LIST, ~ .x %>%
               transmute_at(-1, as.numeric))

【讨论】:

你能解释一下什么 x[-1] @user59419 是更新列表中的data.frame。如果你只使用lapply(x[-1], as.numeric),它会返回一个list的数字向量 这在我使用 LIST2=lapply(LIST, function(x) x[-1] @user59419 因为我没有删除第一列。你需要x[-1] 作为回报 是的,非常感谢,是的,我有数据框列表。

以上是关于将一些函数应用于列表中的数据框列的主要内容,如果未能解决你的问题,请参考以下文章

应用字典查找功能来比较熊猫数据框列

如何在大量数据框列上应用我的 single_space 函数? [关闭]

将函数应用于两列并将输出映射到新列[重复]

如何将 lambda 函数正确应用到 pandas 数据框列

特定数据框列上的 R Apply() 函数

如何在熊猫数据框中使用应用时创建列时间戳?