我正在尝试将包含两列的数据帧转换为命名向量(嵌套列表)。每行中的信息基本上都是键:值对,因此最终向量中的列表应各自由键命名并包含它们各自的值。
Example input:
Var1 Var2
A 1
A 2
B 1
B 3
C 3
C 4
C 5
Example Output:
namedArray = list(A = c(1,2), B = c(1,3), C = c(3,4,5))
我设法使用reshape2包中的dcast()
执行此操作,但这需要额外的后处理来删除行名称和通过强制转换数据框引入的NA。
有没有更有效的方法来实现这一目标?
答案 0 :(得分:4)
如果您有两列:数据框df1中的X和Y,并且您希望Y的值是具有X值的项目的名称:
myList <- as.list(df1$X)
names(myList) <- df1$Y
对于修改后的问题,答案是已经有一个功能完全正确(并且可能是我给出的更好的答案:
> split(dat$Var2, dat$Var1)
$A
[1] 1 2
$B
[1] 1 3
$C
[1] 3 4 5
答案 1 :(得分:1)
感谢@ 42-和@MMerry让我考虑split()。我找到了一个很好的解决方案,将一个变量分割为另一个变量并将输出包装到列表中。
y <- as.list(split(df$Var2, df$Var1))
答案 2 :(得分:0)
如果您想要数据框列表中的键值对,则技术可能如下所示:
{{1}}