看板 R_Language 關於我們 聯絡資訊
: : 另外請問list與array的差別是? : 一般來說,R 的數值物件都是向量, ex: ``` x <- pi show(x) length(x) dim(x) ``` 這表示x 是一個長度1 的向量。 向量加上dimension的概念後就變成array ex: ``` dim(x) <- c(1,1) show(x) class(x) dim(x) <- c(1,1,1) show(x) class(x) dim(x) ``` 以上述為例,x 是個數值向量,而matrix, array本質上也是數值向量。 你只要拿掉dim 之後就變回去了。 但是 list 不一樣, list 是裝著一堆R物件的向量。所以list裡面可以放任何東西,如: - 數值 - matrix - array - data.frame ( ps. data.frame的本質是 list, 和array/matrix差別很多 ) - list - 函數 ex: ``` x <- list() x[[1]] <- pi x[[2]] <- iris x[[3]] <- Sys.time x[[3]]() ``` list 和 一般的向量最大的不同,就在於list可以裝不一樣的物件。 以字串和數值為例,你沒辦法讓一個向量同時有數值和字串: ``` x <- 1:10 show(x) x[10] <- "10" show(x) ``` 同理,matrix和array也有同樣的狀況 ``` x <- matrix(1:10, 5, 2) show(x) x[1,2] <- "6" show(x) ``` 但是list沒有這樣的限制: ``` class(iris[,1]) class(iris[,5]) ``` 這也是為什麼data.frame的底層是list, 而不能用一般的向量的緣故。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.70.185
clickhere:註: list和data.frame本身是向量. 01/29 22:57
ireullin:謝謝您詳細的解說,這樣我懂list的概念了 02/08 22:35