我从R开始并尝试将一些数据组织到这样的嵌套列表中:
library(readr)
dataframe1 <- read_csv2("sampleData.csv", col_names = FALSE)
# convert dataframe to a nested list
width <- ncol(sampleData)
nestedList <- list()
for(i in 1:width){
nestedList[[i]] = list(name=dataframe1[1, i], attribute1 = dataframe1[2, i], attribute2 = dataframe1[3, i], attribute3 = dataframe1[4, i])
}
当我尝试访问列表中的元素时,它们总是显示为元素,如下所示:
> nestedList[[1]]$name
# A tibble: 1 x 1
X1
<chr>
1 B06_01
所以这些列表似乎真的是列表,但为什么单个元素会自动成为一个元素呢? (我知道tibble是一个增强的数据框类。)为什么它们不是矢量?此外,我注意到即使数字值最终也是&#34; chr&#34;在嵌套列表中。
答案 0 :(得分:4)
因为在对tibble对象进行子集化时,它仍保留其属性,请尝试以下示例:
library(tibble)
as_tibble(mtcars)[1, 1]
# # A tibble: 1 x 1
# mpg
# <dbl>
# 1 21
mtcars[1, 1]
# [1] 21
attributes(as_tibble(mtcars)[1, 1])
# $names
# [1] "mpg"
#
# $row.names
# [1] 1
#
# $class
# [1] "tbl_df" "tbl" "data.frame"
attributes(mtcars[1, 1])
# NULL