2016-08-23 55 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

相關問題