Как использовать tapply() в цикле for и распечатать вывод в R?

Я использую tapply() для применения функции к своим данным.

Myrepfun <- function(x,n){
    nstudents <- replicate(1000,sum(sample(x, size=n,replace=TRUE)))
    quantile(nstudents,probs=0.95)
}

tapply(weight,schoolcode,Myrepfun,n=2)

Я хотел бы использовать это в цикле for и распечатать вывод. Я пробовал следующее и получаю сообщение об ошибке: Error: unexpected symbol in "for(n in 12:13) (t=tapply(ow,sc,ndropfunction,n,p=0.95) output

for(n in 1:25) {t=tapply(weight,schoolcode,Myrepfun,n,p=0.95) print(c=(t,n))}

person user1407670    schedule 21.05.2012    source источник
comment
Я бы также рекомендовал избегать использования предопределенных функций R в качестве имен переменных, таких как t. Кроме того, ваш код написан так, что t каждый раз перезаписывается... что может быть, а может и не быть тем, что, по вашему мнению, происходит. Если вы хотите, чтобы t имел те же размеры, что и ваш цикл for, вам необходимо предварительно выделить размеры t, а затем итеративно заполнить t соответствующей индексацией.   -  person Chase    schedule 21.05.2012


Ответы (1)


Воспроизводимые примеры заставляют мир вращаться. Однако ваша проблема в том, что ваш код синтаксически недействителен. Если вы хотите поместить все в одну строку, вам нужно разделить команды точкой с запятой: ;. Или поместите их на две разные строки. Два примера:

> x <- runif(100)
> for (i in 1:3){out <- mean(x);print(c(out,i))}
#-----
[1] 0.4958944 1.0000000
[1] 0.4958944 2.0000000
[1] 0.4958944 3.0000000
> for (i in 1:3){
+   out <- mean(x)
+   print(c(out,i))
+ }
#-----
[1] 0.4958944 1.0000000
[1] 0.4958944 2.0000000
[1] 0.4958944 3.0000000
person Chase    schedule 21.05.2012