R:在嵌套列表中排列和排序

时间:2013-09-22 23:15:30

标签: r list sorting dataframe

我在R中有一个数据框,它有一个包含四个数字的列表类型列:

          Size
Ford   1,2,3,4
Gm     2,3,5,6
Nissan 2,3,4,5
Toyota 1,2,2,4

这里的汽车名称(福特等)是行名称,大小(“1,2,3,4”等)是一列列表。

我想按列大小中的第3个数字对此数据框进行排序,以便得到以下结果:

          Size
Toyota 1,2,2,4
Ford   1,2,3,4
Nissan 2,3,4,5
Gm     2,3,5,6

在一个完整的例子中,每行有很多列,但我仍然希望按“大小”列中的第3个值进行排序。

1 个答案:

答案 0 :(得分:4)

下面的内容会起作用 - 我会先重新制作数据:

dat <- data.frame(
  ID=1:4,
  Size=I(list(1:4,c(2,3,5,6),2:5,c(1,2,2,4))),
  row.names=c("Ford","Gm","Nissan","Toyota")
)

看起来像:

       ID       Size
Ford    1 1, 2, 3, 4
Gm      2 2, 3, 5, 6
Nissan  3 2, 3, 4, 5
Toyota  4 1, 2, 2, 4

然后订购:

dat[order(sapply(dat$Size,"[",3)),]

       ID       Size
Toyota  4 1, 2, 2, 4
Ford    1 1, 2, 3, 4
Nissan  3 2, 3, 4, 5
Gm      2 2, 3, 5, 6