在R中,我有一个列表列表,其打印方式如下:
> ll <- list(list('fname'='joe', 'lname'='smith'), list('fname'='sally', 'lname'='smith'))
> ll
[[1]]
[[1]]$fname
[1] "joe"
[[1]]$lname
[1] "smith"
[[2]]
[[2]]$fname
[1] "sally"
[[2]]$lname
[1] "smith"
但是,如果我从数据框(来自SQL查询)开始并从apply
函数系列中获取列表列表,它看起来像这样:
> ll2 <- apply(df, 1, as.list)
> ll2
$`1`
$`1`$fname
[1] "joe"
$`1`$lname
[1] "smith"
$`2`
$`2`$fname
[1] "sally"
$`2`$lname
[1] "smith"
所以我想理解(1)不同的符号表示什么 - 特别是因为ll
和ll2
似乎都是列表清单? (2)如何将ll2
(或更好的df
)转换为ll
之类的内容?
例如,在this similar question中,每个答案都会产生类似ll2
而不是ll
的内容。例如,lapply(split(df, 1:nrow(df)), as.list)
仍然看起来像ll2
。
我到目前为止找到的唯一答案是循环df
并在我去的时候将新项目添加到列表中:
> ret <- list()
> ret[[1]] <- list('fname'='joe', 'lname'='smith')
> ret[[2]] <- list('fname'='sally', 'lname'='smith')
> ret
[[1]]
[[1]]$fname
[1] "joe"
[[1]]$lname
[1] "smith"
[[2]]
[[2]]$fname
[1] "sally"
[[2]]$lname
[1] "smith"
但我可以看到R people frown on building lists in loops。所以,如果你不喜欢这种方法,那么更好的方法是什么?