【发布时间】:2026-02-15 21:05:02
【问题描述】:
我有一个包含 1500 个数据帧的列表,每个数据帧有 3 个变量和 8 行(使用“split”函数生成)
我想(独立地)按第 2 列对它们进行排序,然后,排序后,我想消除该列(第 2 列)中低于某个值的所有行
有什么想法吗?
非常感谢您。
蒂娜。
【问题讨论】:
-
添加一些示例数据
我有一个包含 1500 个数据帧的列表,每个数据帧有 3 个变量和 8 行(使用“split”函数生成)
我想(独立地)按第 2 列对它们进行排序,然后,排序后,我想消除该列(第 2 列)中低于某个值的所有行
有什么想法吗?
非常感谢您。
蒂娜。
【问题讨论】:
这是一个小例子。
# dummy list of data.frames
set.seed(45)
df <- data.frame(V1=sample(8), V2= sample(8), V3 = sample(8))
df.list <- list(df, df, df, df, df, df, df, df)
# function that does the job
df.out <- lapply(df.list, function(x) {
x[order(x$V2)), ] # order by 2nd column using column name
x[x$V1 > 3, ] # filter by some criteria
# you can combine these two lines as:
# x[order(x$v2)), ][x$v2 > 3, ] (thanks @Ananda for the suggestion)
})
【讨论】:
几个建议:
排序往往是一个缓慢的过程,您可以通过在排序之前先执行子集来加快该过程。或者您可能根本不需要排序。
任何时候你想将一个数据对象分割成片段,对每个片段应用一个函数,然后将结果重新组合在一起,考虑使用 plyr 包,它可能会使过程更容易。
你的最终目标是什么?也许可以用更简单的方式完成整个事情。
【讨论】: