我有以下数据框:
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
有什么想法吗?我的问题是获取标签(名称)而不是索引。
答案 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)