Для списка L oop без сохранения значений - PullRequest
0 голосов
/ 14 июля 2020

У меня есть набор данных о поведении, многократно повторяемом людьми при разных температурах, например:

  ID          Test   Behaviour     Temperature
 A12.4.2      ONE     8.64            4
 A12.4.2      TWO     7.63            5
 A6.3.3       ONE     1.81            3
 A6.3.3       TWO     2.47            9
 B12.4.1      ONE     1.17            12
 B12.4.1      TWO     3.96            2
 E9.4.2       ONE     13.04           13
 E9.4.2       TWO     9.51            6
 ...

Я использую следующий код для случайного подмножества этого набора данных, а затем запускаю анализ повторяемости для подмножества, получение значений R и значений CI из анализа повторяемости в конце.

P<-10000

R_value<-numeric(length=P)
CI_value<-numeric(length=P)
for(i in 1:P){
  newdata<-Data[Data$ID %in% sample(unique(Data$ID), 16), ]
  m1<-rptR::rpt(((Behaviour))~Temperature+(1|ID),grname="ID",data=newdata,datatype="Gaussian",nboot=1000,npermut=1000)
  R_value[i] <- m1$R
  CI_value[i] <- m1$CI
}

К сожалению, это не работает. Когда я звоню R_value или CI_value, меня встречает строка из нулей. После вызова newdata или m1, R сообщает мне, что объект не может быть найден.

Когда я запускаю анализ повторяемости за пределами l oop, все оказывается в порядке.

Кто-нибудь может помочь?

1 Ответ

1 голос
/ 14 июля 2020

Ваш код запущен. Было сообщение об ошибке в sample, которое я изменил на sample(unique(Data$ID), 4). А потом бежит. Вы, вероятно, также могли бы добавить замену, например, sample(unique(Data$ID), 16, replace = TRUE), это тоже работает. Я также уменьшил числа в rboot и npermut.

library(rptR)

Data <- read.table(text = "
ID          Test   Behaviour     Temperature
 A12.4.2      ONE     8.64            4
 A12.4.2      TWO     7.63            5
 A6.3.3       ONE     1.81            3
 A6.3.3       TWO     2.47            9
 B12.4.1      ONE     1.17            12
 B12.4.1      TWO     3.96            2
 E9.4.2       ONE     13.04           13
 E9.4.2       TWO     9.51            6
                   ", header =T)


Data

#>        ID Test Behaviour Temperature
#> 1 A12.4.2  ONE      8.64           4
#> 2 A12.4.2  TWO      7.63           5
#> 3  A6.3.3  ONE      1.81           3
#> 4  A6.3.3  TWO      2.47           9
#> 5 B12.4.1  ONE      1.17          12
#> 6 B12.4.1  TWO      3.96           2
#> 7  E9.4.2  ONE     13.04          13
#> 8  E9.4.2  TWO      9.51           6
P<-10
R_value<-numeric(length=P)
CI_value<-numeric(length=P)

for(i in 1:P){
  newdata<-Data[Data$ID %in% sample(unique(Data$ID), 4), ]
  m1<-rptR::rpt(((Behaviour))~Temperature+(1|ID), grname="ID", data=newdata, datatype="Gaussian", nboot=10, npermut=10)
  R_value[i] <- m1$R
  CI_value[i] <- m1$CI
}


R_value
#> [[1]]
#> [1] 0.8324396
#> 
#> [[2]]
#> [1] 0.8324396
#> 
#> [[3]]
#> [1] 0.8324396
#> 
#> [[4]]
#> [1] 0.8324396
#> 
#> [[5]]
#> [1] 0.8324396
#> 
#> [[6]]
#> [1] 0.8324396
#> 
#> [[7]]
#> [1] 0.8324396
#> 
#> [[8]]
#> [1] 0.8324396
#> 
#> [[9]]
#> [1] 0.8324396
#> 
#> [[10]]
#> [1] 0.8324396
CI_value
#>  [1] 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...