2012-06-21 7 views
5

Sono piuttosto nuovo di R e mi chiedevo se esiste un modo per memorizzare i vettori in un frame di dati in modo tale che ogni voce del frame di dati sia un vettore.Memorizza i vettori come voci del frame di dati?

voglio assegnare la voce a un vettore, ed essere in grado di cambiare in un secondo momento:

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

Ma può solo fare questo lavoro come sostituzione di 3 diverse voci nella cornice di dati. Qualcuno sa se questo è possibile?

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

Vuoi dire che vuoi essere in grado di utilizzare vettori di dimensioni diverse? –

+2

Sarà meno confuso se si smette di provare a farlo su un frame di dati e invece di usare solo un elenco di liste. – joran

+0

concordato. una lista di liste o array probabilmente sarebbe meglio. Questo non è possibile in quanto un dataframe è un oggetto 2D – LostLin

risposta

3

Non è possibile avere un frame di dati 3D. È possibile raggiungere questo molti modi, ma il più facile da spiegare concettualmente probabilmente sarebbe avere una lista all'interno di un elenco:

> 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 

Ora diciamo che si desidera modificare la seconda voce di V1 si dovrebbe semplicemente fare

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

o

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

+0

Capisco come sostituire una riga o una colonna; Voglio memorizzare i vettori nel frame di dati, un vettore come ogni voce: 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

cosa intendi per voce? intendi riga? – LostLin

+0

vedi esempio di frame dati in questione ... Scusa, questo è così confuso! – user1428668

Problemi correlati