将数据框转换为双括号索引标识每列的列表

时间:2016-06-03 02:01:19

标签: r list dataframe

我想拍这个data.frame:

df1 <- data.frame(col1 = c(1, 2), col2 = c('A', 'B'))

并将其转换为具有以下结构的列表:

man.list <- list(list(1, 'A'), list(2, 'B'))

我试过这种方法:

df1.list <- split(df1, seq(nrow(df1)))

但这不是我想要的,因为

df1.list[[1]]

给出

  col1 col2
1    1    A

man.list[[1]]

给出

[[1]]
[1] 1

[[2]]
[1] "A"

如何将df1转换为具有man.list结构的列表?

1 个答案:

答案 0 :(得分:2)

我们可以按行序列split转换&#39; col2&#39;到character课程,将names设置为&#39; NULL&#39;并使用list转换为as.list

man.list2 <- setNames(lapply(split(df1, 1:nrow(df1)), function(x) 
    setNames(as.list(transform(x, col2 = as.character(col2))), NULL)), NULL)
identical(man.list, man.list2)
#[1] TRUE

或者如果&#39; 1&#39;和&#39; 2&#39;也可以是字符(这会将其存储在list中的想法失败),如评论中所示

lapply(strsplit(do.call(paste, df1), " "), as.list)