Обновление существующей матрицы новым столбцом, в котором в строках хранятся различные значения p - PullRequest
1 голос
/ 02 апреля 2020

У меня есть код, который я написал:

my.data = matrix(rnorm(20000), ncol = 20)
View(my.data)

empty5 = character()
empty10 = character()

for (variable in 1:nrow(my.data)) {

  nrFirst5 = my.data[variable,c(1,2,3,4,5)]
  nrSecond5 = my.data[variable,c(6,7,8,9,10)]

  nrFirst10 = my.data[variable,c(1,2,3,4,5,6,7,8,9,10)]
  nrSecond10 = my.data[variable,c(11,12,13,14,15,16,17,18,19,20)]
  #print(nrSecord)

  ttColumn5 = t.test(nrFirst5, nrSecond5, data = my.data, paired = TRUE)
  pp5 = ttColumn5$p.value
  #print(pp5)

  ttColumn10 = t.test(nrFirst10, nrSecond10, data = my.data, paired = TRUE)
  pp10 = ttColumn10$p.value
  #print(tt)

  #my.data$p5 = my.data[pColumn5]
  #my.data$p10 = my.data[pColumn10]

  pplace5 = append(empty5,pp5)

  pplace10 = append(empty10,pp10)

}


my.data <- cbind(my.data, pplace5)

View(my.data)

Он получает все p-значения, которые я хочу. Тем не менее, я не могу понять, как обновить матрицу my.data с другим столбцом, который имеет эти p-значения. Прямо сейчас он создает новый столбец с именем place5, но хранит одно и то же точное число во всех строках. Но я хочу, чтобы в этих строках были разные значения p. Может ли кто-нибудь помочь?

Я тоже так пытался

my.data$place5 = my.data$pplace5

Но выдает ошибку. Например: оператор

$ недопустим для атомов c векторов

1 Ответ

2 голосов
/ 02 апреля 2020

Опция 1

my.data = matrix(rnorm(20000), ncol = 20)
pplace5 = character()
pplace10 = character()

for (variable in 1:nrow(my.data)) {
  pp5 = t.test(my.data[variable,c(1:5)], my.data[variable,c(6:10)], paired = TRUE)$p.value
  pp10 = t.test(my.data[variable,c(1:10)], my.data[variable,c(11:20)], paired = TRUE)$p.value

  pplace5 = append(pplace5, pp5)
  pplace10 = append(pplace10, pp10)
}
my.data <- cbind(my.data, pplace5)
my.data <- cbind(my.data, pplace10)

Опция 2 (короче и быстрее):

my.data = matrix(rnorm(20000), ncol = 20)

aa <- apply(my.data, 1, function(x) {
  pp5 = t.test(x[1:5], x[6:10], paired = TRUE)$p.value
  pp10 = t.test(x[1:10], x[11:20], paired = TRUE)$p.value
  c(pp5, pp10)
})

my.data <- cbind(my.data, t(aa))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...