R:将data.frame转换为带有data.frame标记的列表

时间:2016-05-24 17:58:59

标签: r list dataframe

我有以下数据框:

df0 <- data.frame(N1    = c("A","B")
                , N2    =c("C","C")
                , value =c(10,10)
                )
> df0
  N1 N2 value
1  A  C    10
2  B  C    10

我想转换成具有以下结构的列表:

list0 <- list( A= list( C= 10 )
             , B= list( C= 10 ) 
             )
> list0
$A
$A$C
[1] 10

$B
$B$C
[1] 10

> str(list0)
List of 2
 $ A:List of 1
  ..$ C: num 10
 $ B:List of 1
  ..$ C: num 10

有什么想法吗?我的问题是获取标签(名称)而不是索引。

2 个答案:

答案 0 :(得分:3)

您可以使用apply功能:

list0 <- setNames(apply(df0, 1, function(row) {
                 a <- list()
                 a[[row[2]]] <- as.numeric(row[3]) 
                 return (a) 
              }), df0$N1)
list0
$A
$A$C
[1] 10


$B
$B$C
[1] 10


str(list0)
List of 2
 $ A:List of 1
  ..$ C: num 10
 $ B:List of 1
  ..$ C: num 10

答案 1 :(得分:2)

试试这个:

split(setNames(as.list(df0$value),df0$N2),df0$N1)