[[1]]与$`1`之间的R差异

时间:2016-06-13 17:17:23

标签: r

在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)不同的符号表示什么 - 特别是因为llll2似乎都是列表清单? (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。所以,如果你不喜欢这种方法,那么更好的方法是什么?

0 个答案:

没有答案