Созданный вами фрейм данных имеет заголовок (col.names), который не совместим с функцией rnorm.См .:
> dat <- data.frame(c(10,100,50), mean=c(5,5,10), sd=c(1,2,1))
> dat
c.10..100..50. mean sd
1 10 5 1
2 100 5 2
3 50 10 1
И функция m * pply не знает, что делать со столбцом 'c.10..100..50 ...'.
Как вы можетесм. в документации (?mdply
), следующий пример работает как шарм:
> mdply(data.frame(mean = 1:5, sd = 1:5), rnorm, n = 2)
mean sd V1 V2
1 1 1 0.09919179 0.6083586
2 2 2 0.92787891 -0.1139743
3 3 3 2.21236781 0.8029677
4 4 4 4.16506428 9.2477373
5 5 5 1.26558507 12.0633377
Если вы действительно хотите различное количество наблюдений с разными параметрами, вы не должны использовать mdply, потому что матрица /data.frame должен иметь одинаковое количество столбцов.Использование Insted mlply
, например:
> mlply(data.frame(n=1:5, mean = 1:5, sd = 1:5), rnorm)
$`1`
[1] 1.053083
$`2`
[1] -1.650090 2.239547
$`3`
[1] -0.94697908 -1.11479730 -0.03467497
$`4`
[1] 6.427796 1.482655 1.436822 -5.993420
$`5`
[1] 4.557689 6.217015 2.105255 -1.309664 -2.969184
attr(,"split_type")
[1] "array"
attr(,"split_labels")
n mean sd
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5