为什么我的列表元素转换为tibbles?

时间:2016-08-23 15:08:51

标签: r data-structures

我从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;在嵌套列表中。

1 个答案:

答案 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