Если мы хотим использовать 'Cultivar' для извлечения имен столбцов, l oop поверх 'Cultivar', 'Dose' соответствующих значений с Map
, извлеките столбец на основе значения 'Culivar' для ' data1 ', создайте новый столбец' Dose 'с transform
и примените lm
, извлеките значения p из coef
ficients
lst1 <- Map(function(x, y) {
tmpdat <- transform(as.data.frame(data1)[x], Dose = y)
model <- lm(Dose ~ ., data = tmpdat)
coef(summary(model))[, "Pr(>|t|)"]}, data2$Cultivar, data2$Dose)
lst1
#$S869
#[1] 1.218223e-78
#$S907
#[1] 1.218223e-78
#$S909
#[1] 2.265096e-79
#...
data
data1 <- structure(list(gene = c("S1", "S2", "S3", "S4", "S5", "S6"),
S869 = c(0L, 0L, 0L, 0L, 0L, 0L), S907 = c(0L, 0L, 0L, 0L,
0L, 0L), S909 = c(0L, 0L, 0L, 0L, 0L, 0L), S016 = c(0, 0,
0.423405, 0, 0, 0), S090 = c(0L, 0L, 0L, 0L, 0L, 0L), S160 = c(0L,
0L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))
data2 <- structure(list(Cultivar = c("S869", "S907", "S909", "S016", "S090",
"S160"), Dose = c(10L, 5L, 7L, 19L, 15L, 12L)), class = "data.frame",
row.names = c(NA,
-6L))