Skip to content

How to Create Nested Data Frame

4 messages · Gundala Viswanath, Ivan Calandra

#
Dear Experts,

I have a data that looks like this.
V1 V2
1  1 43
2  1 43
3  1 43
V1 V2
1  1 43
2  1 21
3  1 43
4  1 43
5  1 24
6  0 24
The column V1 refer to labels and V2 to prediction score.

How can I create a data structure called HIV, that looks like this:
$hiv.dat1
$hiv.dat1$predictions
$hiv.dat1$predictions[[1]]
[1] 43 43 43
$hiv.dat$labels
$hiv.dat$labels[[1]]
[1] 1 1 1

$hiv.dat2
$hiv.dat2$predictions
$hiv.dat$predictions[[1]]
[1] 43 21 43 43 24 24
$hiv.dat2$labels
$hiv.dat2$labels[[1]]
[1] 1 1 1 1 1 0

Forgive me I am a newbies here.

- G.V.
#
Hi,

Would that do?
names(dat1) <- names(dat2) <- c("labels","predictions")
HIV <- list(hiv.dat1=dat1, hiv.dat2=dat2)

Ivan


Le 1/31/2011 10:50, Gundala Viswanath a ?crit :

  
    
#
Hi Ivan,

Thanks for the reply.
But I won't do.
The above snippet produces this instead:
$hiv.dat1
  labels predictions
1      1          43
2      1          43
3      1          43

$hiv.dat2
  labels predictions
1      1          43
2      1          21
3      1          43
4      1          43
5      1          24
6      0          24


- G.V.
#
You're right, it's not exactly what you wanted.

But... data.frames are lists, so you would access each element of it as 
you intended to:
HIV$hiv.dat1$predictions

My opinion is that it's easier to work with data.frames when possible 
(as opposed to lists), and I don't see why you would break down the 
columns of the data.frames. Plus you asked for nested data.frames.
But maybe you do need to separate the columns of a data.frame, and you 
could do it like this:
HIV <- list(hiv.dat1=as.list(dat1), hiv.dat2=as.list(dat2))

HTH,
Ivan

Le 1/31/2011 15:31, Gundala Viswanath a ?crit :