Как поместить результат в матрицу, используя R - PullRequest
0 голосов
/ 05 ноября 2018

Итак, у меня есть код, который я сделал здесь:

for (i in 2:25) { 
  print(i)
  print(cor.test(demo_data[, i], demo_data[, 1]))
}

Так что это в основном запускает каждую переменную x (2:25) для моей единственной переменной y (1), и на выходе получается значение p и значение корреляции. Я хочу поместить эти выходные данные в таблицу, в которой есть столбцы для меток (что я тестировал), корреляции (значение из cor.test) и значения p (другое значение из cor.test). Как мне это сделать? Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Я бы написал что-то вроде:

result_matrix = matrix(nrow=24, ncol=3) 

for (i in 2:25) { 
  print(i)
  cor.result <- cor.test(demo_data[, i], demo_data[, 1])
  result_matrix[i-1,] <- c(demo_data[, i], cor.result$estimate, cor.result$p.value)
}

Надеюсь, это поможет.

0 голосов
/ 05 ноября 2018

Вы можете запустить все тесты за один раз с apply.
Я составлю набор данных, поскольку вы его еще не опубликовали.

set.seed(9263)    # Make the results reproducible
n <- 1000
demo_data <- matrix(runif(n, 0, 10), ncol = 25)

cor_list <- apply(demo_data[, -1], 2, cor.test, demo_data[, 1])

Вот и все.
Теперь, чтобы извлечь нужные значения, помните, что объекты класса "htest", класса, возвращаемого многими *.test функциями базы R, представляют собой не что иное, как списки с измененным атрибутом класса. Итак, стандартные функции извлечения работают.

corval <- sapply(cor_list, '[[', "estimate")
pval <- sapply(cor_list, '[[', "p.value")
labs <- paste("cor", 2:25, 1, sep = ".")

res <- data.frame(labels = labs, cor = corval, p.value = pval)

head(res)
#   labels          cor   p.value
#1 cor.2.1  0.190852493 0.2381344
#2 cor.3.1 -0.033208075 0.8388049
#3 cor.4.1  0.236789973 0.1412597
#4 cor.5.1  0.003775437 0.9815539
#5 cor.6.1 -0.079078805 0.6276482
#6 cor.7.1  0.003072550 0.9849876
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...