从两列创建一个命名列表,每个名称具有多个值

时间:2017-09-15 11:25:27

标签: r list

我想创建一个命名列表,其中每个名称都有多个值。如果每个名称都有一个值,我只能找到如何执行此操作。我现在使用的解决方案是

df <- data.frame(col1=c('a','a','b','b'), col2=c(1,2,3,4))
l <- list()
for(letter in unique(df$col1)){
  l[[letter]] <- df[df$col1==letter,]$col2
}

> l
$a
[1] 1 2
$b
[1] 3 4

但有什么更好的方法呢?

1 个答案:

答案 0 :(得分:3)

我们可以使用split返回named list vector

split(df$col2, df$col1)