我有一个数据框列表dataframes_list
。举个例子,我把dput(dataframes_list)
放在底部。我想对列enrichment
列表中的所有数据帧进行排序。我可以用
first_dataframe <- dataframes_list[[1]]
sorted_dataframe <- first_dataframe[order(first_dataframe$enrichment),]
如何为dataframes_list
中的每个数据框执行此操作?
示例dataframes_list
:
list(structure(list(rank = c(1, 2, 3, 4, 5, 6), cmap.name = c("meclocycline",
"pimozide", "isocorydine", "alvespimycin", "15-delta prostaglandin J2",
"naloxone"), mean = c(-0.471, 0.504, -0.49, 0.193, 0.296, -0.383
), n = c(4, 4, 4, 12, 15, 6), enrichment = c(-0.869, 0.855, -0.859,
0.539, 0.476, -0.694), p = c("0.00058", "0.00058", "0.00068",
"0.00072", "0.00122", "0.00199"), specificity = c("0", "0.0302",
"0", "0.069", "0.2961", "0.0155"), percent.non.null = c(100,
100, 100, 50, 60, 83), signature_name = c("day1_day3__sham3_strict",
"day1_day3__sham3_strict", "day1_day3__sham3_strict", "day1_day3__sham3_strict",
"day1_day3__sham3_strict", "day1_day3__sham3_strict")), .Names = c("rank",
"cmap.name", "mean", "n", "enrichment", "p", "specificity", "percent.non.null",
"signature_name"), row.names = c(NA, 6L), class = "data.frame"),
structure(list(rank = c(1, 2, 3, 4, 5, 6), cmap.name = c("trichostatin A",
"daunorubicin", "ketotifen", "quipazine", "minoxidil", "ricinine"
), mean = c(-0.319, -0.515, 0.486, 0.476, 0.316, -0.481),
n = c(182, 4, 4, 4, 5, 4), enrichment = c(-0.384, -0.883,
0.862, 0.861, 0.812, -0.816), p = c("0", "0.00046", "0.0005",
"0.0005", "0.00058", "0.00209"), specificity = c("0.3762",
"0.0175", "0.0053", "0.0065", "0", "0.006"), percent.non.null = c(56,
100, 100, 100, 60, 100), signature_name = c("hour4_day1_day3__sham3_strict",
"hour4_day1_day3__sham3_strict", "hour4_day1_day3__sham3_strict",
"hour4_day1_day3__sham3_strict", "hour4_day1_day3__sham3_strict",
"hour4_day1_day3__sham3_strict")), .Names = c("rank",
"cmap.name", "mean", "n", "enrichment", "p", "specificity",
"percent.non.null", "signature_name"), row.names = c(NA,
6L), class = "data.frame"))
答案 0 :(得分:7)
使用lapply
:
sorted_dataframes_list <- lapply(dataframes_list, function(df){
df[order(df$enrichment),]
})
答案 1 :(得分:3)
lapply 是你的朋友;)
你可以使用dplyr pacakge的安排来做到这一点:
library(dplyr)
newlist <- lapply(dataframeslist, function(df){arrange(df,enrichment)})
或没有像这样的dplyr:
newlist <- lapply(dataframeslist, function(df){df[order(df$enrichment),]})
答案 2 :(得分:2)
这是一个data.table
解决方案。
require(data.table)
# Convert to data.table
dataframes_list <- lapply(dataframes_list, data.table)
# Setting a key sorts a data.table
lapply(dataframes_list, setkey, enrichment)