我在对象lists
中有25个列表,我从25个RNAseq数据中对其进行了子集,相关值小于-0.4。
它们具有不同的长度和不同的行名,如下所示。
head(lists)
$Sample1
Sample1
CWC27 -0.4000203
MCM3AP-AS1 -0.4000415
TAF1D -0.4000936
SOX21 -0.4003181
PRPF6 -0.4003951
TYSND1 -0.4005185
$Sample2
Sample2
ZEB1 -0.4000603
BRD7 -0.4001116
AP2B1 -0.4003789
CDH10 -0.4005792
$Sample3
Sample3
WIZ -0.4125093
RAB22A -0.4175807
TMEM143 -0.4176838
HNRNPUL1 -0.4187072
SOBP -0.4194346
我想只返回行名而不是值,例如
Sample1 Sample2 Sample3
CWC27 ZEB1 WIZ
MCM3AP-AS1 BRD7 RAB22A
TAF1D AP2B1 TMEM143
SOX21 CDH10 HNRNPUL1
PRPF6 SOBP
TYSND1
我迷失了因为我不熟悉R.我试过像
这样的东西do.call(cbind, lapply(lapply(lists, unlist), "[",
unique(unlist(c(sapply(lists,rownames))))))
它没有用,返回
Sample1 Sample2 Sample3
NA NA NA
NA NA NA
NA NA NA
NA NA NA
NA NA NA
NA NA NA
有人能帮帮我吗?谢谢!
答案 0 :(得分:1)
打破它:
首先,抓住每个对象的rownames
names_list <- lapply(lists, rownames)
然后,获取最长列表的长度。
max_length <- max(sapply(names_list, length))
然后,将每个列表的长度设置为列表中任何项目的最大长度。任何较短的列表都会填充NA
s。
names_list <- lapply(names_list, "length<-", max_length)
最后,转换为data.frame
。
data.frame(names_list)