2012-06-21 20 views
5

Soy bastante nuevo en R y me preguntaba si hay una forma de almacenar vectores en un marco de datos de modo que cada entrada del marco de datos sea un vector.¿Almacenar vectores como entradas de marcos de datos?

que desea asignar a la entrada de un vector, y ser capaz de cambiar más adelante:

df[2,]$Value <- c(1,2,0) 
df[3,]$Value <- c(0,0,1) 
df[3,]$Value <- df[3,]$Value + c(2,4,4) 

Pero sólo se puede hacer este trabajo como la sustitución de 3 entradas diferentes en la trama de datos. ¿Alguien sabe si esto es posible?

df: 
     V1 V2  V3 
1 c(1,2) c(2,3) c(0,0) 
2 c(1,1) c(0,0) c(2,2) 
+0

¿Quiere decir que quiere poder usar vectores de diferentes tamaños? –

+2

Será menos confuso si deja de intentar conectarlo a un marco de datos y en su lugar solo usa una lista de listas. – joran

+0

de acuerdo. una lista de lista o una matriz probablemente sería mejor. Esto no es posible ya que un dataframe es un objeto 2D – LostLin

Respuesta

3

No puede tener un marco de datos 3D. Esto se puede conseguir de muchas maneras, pero la más fácil de explicar conceptualmente probablemente sería tener una lista dentro de una lista:

> entries <- list(V1=list(c(1,2), c(1,1)), V2=list(c(2,3), c(0,0)), V3=list(c(0,0),c(2,2))) 
> entries 
$V1 
$V1[[1]] 
[1] 1 2 

$V1[[2]] 
[1] 1 1 


$V2 
$V2[[1]] 
[1] 2 3 

$V2[[2]] 
[1] 0 0 


$V3 
$V3[[1]] 
[1] 0 0 

$V3[[2]] 
[1] 2 2 

Ahora digamos que desea cambiar la segunda entrada de la V1 sólo tendría que hacer

entradas $ V1 [[2]] < - c (2,2)

o

entradas [[1]] [[2]] < - c (2,2)

+0

Entiendo cómo reemplazar una fila o columna; Quiero almacenar los vectores en el marco de datos, un vector como cada entrada: df: V1 V2 V3 1 c (1,2) c (2,3) c (0,0) 2 c (1 , 1) c (0,0) c (2,2) – user1428668

+0

¿Qué quieres decir con la entrada? ¿te refieres a la fila? – LostLin

+0

ver el ejemplo del marco de datos en cuestión ... ¡Lo siento, es tan confuso! – user1428668

Cuestiones relacionadas