Это будет более компактно и даст p.values из дублированных данных. Это то, что вы хотели?
dtt <- do.call(rbind, apply(data, 1, function(y){
cor.test(y,phenotype,method="spearman")
}[c("p.value", "estimate")]
) )
dtt
### p.value estimate
[1,] 0.2305644 0.1208641
[2,] 0.2305644 0.1208641
[3,] 0.2305644 0.1208641
[4,] 0.2305644 0.1208641
[5,] 0.2305644 0.1208641
[6,] 0.2305644 0.1208641
[7,] 0.2305644 0.1208641
[8,] 0.2305644 0.1208641
[9,] 0.2305644 0.1208641
[10,] 0.2305644 0.1208641
Изменить: Если вы ищете скорость и / или возможность легкой транспортировки на параллельные платформы, добавьте это в список кандидатов:
pmtx <- matrix(NA, nrow=nrow(data), ncol=2)
for( i in 1:nrow(data) ) {
pmtx[i, 1:2 ] <- unlist(cor.test(data[i, ],
phenotype,
method="spearman")[c("p.value", "estimate")] ) }
pmtx