Tengo un vector que me dice, para cada fila en un marco de fecha, el índice de columna para el cual se debe actualizar el valor en esta fila.Elija una celda por fila en el marco de datos
> set.seed(12008); n <- 10000; d <- data.frame(c1=1:n, c2=2*(1:n), c3=3*(1:n))
> i <- sample.int(3, n, replace=TRUE)
> head(d); head(i)
c1 c2 c3
1 1 2 3
2 2 4 6
3 3 6 9
4 4 8 12
5 5 10 15
6 6 12 18
[1] 3 2 2 3 2 1
Esto significa que para las filas 1 y 4, se debe actualizar c3; para las filas 2, 3 y 5, se debe actualizar c2 (entre otros). ¿Cuál es la forma más limpia de lograr esto en R usando operaciones vectorizadas, es decir, sin apply
y amigos? EDITAR: Y, si es posible, ¿sin bucles R?
He pensado en transformar d
en una matriz y luego abordar los elementos de la matriz utilizando un vector unidimensional. Pero luego no encontré una forma clara de calcular la dirección unidimensional a partir de los índices de fila y columna.
¿Ha sido portado a la rama 2.15.1? R-devel generalmente significa la próxima versión menor, es decir, 2.16.x. –
@GavinSimpson - Buena captura. Gracias. Mirando nuevamente, ahora veo la nota destacada que la "instantánea de desarrollo R59537 de R [...] eventualmente se convertirá en R-2.16.0". Editaré mi publicación en consecuencia. –
¿Habrá compatibilidad análoga para matrices/matrices también? – krlmlr