Utilice “Aplicar” y “Replicar” en una función para una matriz.
Tengo una matriz numérica de N x N que he convertido en un marco de datos en R, y necesito aplicar rnorm
a cada celda. Sin embargo, quiero usar apply
y replicate
para llevar a cabo este cálculo. Mi código actual para el cálculo en la primera celda (que tiene encabezados) es:
firstCell <- data.frame(
rnorm(1000, mean = matrixName[2,1], sd = 0.8*matrixName[2,1])
)
Intenté usar apply
primero con:
matrixApply <- apply(
matrixName, c(1,2), function(x) rnorm(
1000,
mean = x,
sd = 0.8*x
)
)
Ahora, quiero usar replicate
para replicar este mismo cálculo 1000 veces, lo que resulta en 1000 instancias de esta matriz N x N. Sin embargo, cuando uso el siguiente código, solo obtengo la misma matriz repetida 1000 veces.
useReplicate <- replicate(n=1000, matrixApply, simplify=F)
davy.ai
Para realizar el cálculo de aplicar rnorm a cada celda en el dataframe utilizando
apply
yreplicate
, puedes usar el siguiente código:Explicación:
nombreMatriz
se convierte en un dataframedf
.apply
con una función anónima que aplicarnorm
a cada celda en el dataframe.N x N x 1000
, dondeN x N
son las dimensiones del dataframe original y1000
es el número de replicaciones.replicate
para replicar el cálculo1000
veces, obteniendo una lista de1000
matrices.Ten en cuenta que en el código de ejemplo que proporcionaste,
rnorm
se aplicó solo a la primera celda. El código mostrado aquí aplicarnorm
a cada celda en el dataframe, lo que puede producir una salida diferente en comparación con el código original.