У меня есть матрица data
и list
.Я хотел бы найти совпадения между каждым вектором в моем списке с именами строк в моей матрице, вычислить их среднее значение и добавить эти значения во фрейм данных df
, а новый столбец фрейма данных будет иметь то же имя, что и имена каждого вектора всписок.Я сделал это вручную, но мне интересно, как я могу сделать это for loop
способом с более эффективными кодами.
data <- matrix(runif(75, 5.0, 10), nrow = 15, ncol = 5)
rownames(data) <- paste0("GENE",1:15)
colnames(data) <- paste0("COL",1:5)
list <- list(n = c("GENE1","GENE2","GENE3"), s = c("GENE4", "GENE5","GENE6","GENE7"),b = c("GENE8","GENE10", "GENE12", "GENE15"))
df <- data.frame(row.names = colnames(data))
df$n <- matrixStats::rowMeans2(t(data[intersect(row.names(data),list$n),]))
df$s <- matrixStats::rowMeans2(t(data[intersect(row.names(data),list$s),]))
df$b <- matrixStats::rowMeans2(t(data[intersect(row.names(data),list$b),]))