如何应用标准子设置操作的等效项,但应用于数据帧列表而不是单个数据帧

How to apply the equivalent of standard sub setting operations but to a list of dataframes instead of to a single dataframe

提问人:Marlen 提问时间:12/30/2022 最后编辑:Marlen 更新时间:1/4/2023 访问量:35

问:

我在一个文件夹中有一组 40 个不同的数据集,我已将这些数据集加载到 RStudio 中的 WorkSpace 中:

datasets <- lapply(filepaths_list, read.csv, header = FALSE)

此对象数据集是包含 40 个数据帧的列表。 当对象是单个数据帧时,我想运行与以下代码行相同的代码:

All_sample_obs <- datasets[-1:-3,]

从那里,我同样想找到找到以下 3 个简单预处理转换步骤的迭代版本的方法:

All_sample_obs <- lapply(All_sample_obs, as.numeric)
All_sample_obs <- as.data.frame(All_sample_obs)
All_sample_obs <- round(All_sample_obs, 3)
R 转换 预处理数据

评论

1赞 PavoDive 12/30/2022
你可以做.可以使用 将它们转换为数字。将列表转换为 data.frame 的步骤对我来说意义不大,但我不知道数据。另外,由于您没有向我们展示什么是,因此我无法告诉您最后一个代码块all_sample_obs = lapply(all_sample_obs, function(x), x[-1:-3,])laplly(all_sample_obs, as.numeric)df
0赞 Marlen 12/30/2022
@PavoDive所有非常有用的东西,谢谢。而且,有趣的是,您提到 as.data.frame 步骤看起来是不必要的,因为实际上在这种情况下,对象是已加载数据集的列表,R 会自动将该列表的每个元素导入为 DataFrame,但在我的单个数据集的原型脚本中并非如此。在那种情况下,它是一个列表或数据帧之外的其他东西,我很确定它是一个列表。
0赞 Marlen 12/30/2022
@PavoDive另一个古怪的细节是,All_sample_obs <- lapply(All_sample_obs, as.numeric) 实际上是我用于单个数据集情况的命令,所以我最终使用了数据集 <- lapply(All_sample_obs, (X) { lapply(X, as.numeric) }) 对于这里的问题!
0赞 Marlen 12/31/2022
@PavoDive以新的眼光回顾我的问题,我完全明白你的意思,即我没有包括任何关于我的数据外观的打印输出这一事实限制了一个人回答我问题的能力,我将在接下来的几分钟内将其添加到PS部分的最后。

答:

0赞 Marlen 1/4/2023 #1

以下内容应该可以满足您的要求:

All_sample_obs <- lapply(datasets, function(i) {i[-1:-3, ]})

All_sample_obs <- lapply(All_sample_obs, \(X) { lapply(X, as.numeric) })
All_sample_obs <- lapply(All_sample_obs, function(i) { as.data.frame(i) })
All_sample_obs <- lapply(All_sample_obs, \(X) { round(X, 3) })

我包含了两个解决方案,每个解决方案都用于 lapplies 的两种常见语法,两者都是有效的。