【发布时间】:2019-05-30 18:38:41
【问题描述】:
我有一个大数据框,我想将其转换为列表列表。列表将按数据框的列名进行拆分。 数据框如下所示。
df1 <- data.frame(TP1.expression =c(3, 8, 2),
TP1.pval = c(0.04, 0.03, 0.01),
TP1.log2fc = c(1, 0.3, 2.1),
TP2.expression =c(2, 4, 2.1),
TP2.pval = c(0.024, 0.02, 0.01),
TP2.log2fc = c(-1, 0.1, 3.1),
row.names = c('GeneA', 'GeneB', 'GeneC'))
我想将df1 转换为列表列表。理想情况下,列表结构如下所示。
list1
TP1
TP1.expression 3, 8, 2
TP1.pval 0.04, 0.03, 0.01
TP1.log2fc 1, 0.3, 2.1
TP2
TP2.expression 2, 4, 2.1
TP2.pval 0.024, 0.02, 0.01
TP2.log2fc -1, 0.1, 3.1
因此列表将拆分为在TP 和. 字符之间找到的整数。
我已设法将数据框拆分为较小的数据框,然后将它们重新组合成一个列表,但使用的方法过于具体。我正在寻找更通用的东西来变成一个函数。
下面的示例将 df1 分成五个不同的数据帧,然后可以将它们重新排序到一个列表中。我正在寻找更简洁的方法来做到这一点。
tp <- c(1, 2, 3, 10, 14)
timepoint <- 'TP'
for (i in tp) {
common <- paste0(timepoint, i)
assign(common, df1[, grep(paste0(common, "\\."), colnames(df1), ignore.case = T)])
X <- list(TP1, TP2, TP3, TP10, TP14)
}
非常感谢您的帮助。
【问题讨论】: