2016-08-23 54 views
1

我开始用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]) 
} 

当我尝试访问从列表中的元素,他们总是显示为tibbles,像这样:

> nestedList[[1]]$name 
# A tibble: 1 x 1 
     X1 
    <chr> 
1 B06_01 

所以列表看起来好像是列表,但是为什么单个元素会自动地变成小菜? (我明白tibble是一个增强的数据框类。)它们为什么不是矢量?另外,我注意到即使数字值在嵌套列表中最终为“chr”。

+2

因为data.frame1在使用'readr'的'read_csv2'功能来读取。该函数默认导入'tbl'类的数据。 – Abdou

回答

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 
+0

我看到了(虽然我看不到你的例子演示了如何从一个Tibble中取出一个单值仍然会产生一个子集 - tibble) –

+0

@prinzminz'as_tibble(mtcars)'将它转换为tibble对象,然后我将第一行,第一列,'as_tibble(mtcars)[1,1]'。一行,一列是单个值。 – zx8754

相关问题