【发布时间】:2014-12-04 20:58:23
【问题描述】:
我有几个列表,每个列表都有 N 个对象(例如下面的 unsorted$b)和一个包含 N 行的数据框(下面的 unsorted$a)。所有这些都在一个列表中 (unsorted)。我希望对数据框进行排序,同时重新排列每个嵌套列表以保留一般顺序。例如:
> unsorted <- list(a=data.frame(age=c(30,10,20), name=c("ann","bob","carl")), b=list("3x10","1x10","2x10"))
> unsorted
$a
age name
1 30 ann
2 10 bob
3 20 carl
$b
$b[[1]]
[1] "3x10"
$b[[2]]
[1] "1x10"
$b[[3]]
[1] "2x10"
我想按年龄排序
ord <- order(unsorted$a$age)
这就是诀窍:
sorted <- list(a=unsorted$a[ord,], b=unsorted$b[ord])
> sorted
$a
age name
2 10 bob
3 20 carl
1 30 ann
$b
$b[[1]]
[1] "1x10"
$b[[2]]
[1] "2x10"
$b[[3]]
[1] "3x10"
这可以通过 apply 或其化身之一来完成吗?
-- 编辑--
我真实案例中的父列表有大量的子列表。所有子列表都包含 N 个对象,但这些对象具有可变结构。
【问题讨论】:
-
查看我的编辑。下次尝试在您的文本和代码中引用您的变量名。如果您的第一段说“我有几个列表,每个列表都有 N 个对象(例如下面的
unsorted$b)和一个包含 N 行的数据框(下面的unsorted$a),那么您的第一段将立即对我有意义。所有这些都在一个单个列表 (unsorted)... -
当然,现在我很清楚,但在第一次阅读时,我认为您的意思是 每个 列表都有自己的 data.frame,但不必猜测哪个在您的示例中列出您的意思是“所有这些都分组在数据框和嵌套列表的列表中”会让我更快地直截了当。