У меня есть большой фрейм данных, который я хотел бы преобразовать в список списков. Списки будут разделены по именам столбцов фрейма данных.
Фрейм данных выглядит следующим образом.
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)
}
Помощь будет очень признателен.