3 回答

TA貢獻1818條經驗 獲得超3個贊
來自?data.frame:
如果將列表或數據幀或矩陣傳遞給“ data.frame”,則好像每個組件或列都作為單獨的參數傳遞(“ class.model.matrix”類的矩陣以及受“ I”保護的矩陣除外) ')。
所以
data.frame(a=1:3,b=I(list(1,1:2,1:3)))
似乎有效。

TA貢獻1809條經驗 獲得超8個贊
如果您正在使用data.tables,則可以避免致電I()
library(data.table)
# the following works as intended
data.table(a=1:3,b=list(1,1:2,1:3))
a b
1: 1 1
2: 2 1,2
3: 3 1,2,3

TA貢獻1828條經驗 獲得超13個贊
data_frameS(所謂的不同tibbles,tbl_df,tbl)原生支持使用列表的列的創建data_frame構造函數。使用它們,加載與他們如許多庫之一tibble,dplyr或tidyverse。
> data_frame(abc = letters[1:3], lst = list(1:3, 1:3, 1:3))
# A tibble: 3 × 2
abc lst
<chr> <list>
1 a <int [3]>
2 b <int [3]>
3 c <int [3]>
它們實際上是data.frames在幕后,但有些修改。它們幾乎總是可以正常使用data.frames。我發現的唯一例外是,當人們進行不適當的類檢查時,它們會引起問題:
> #no problem
> data.frame(x = 1:3, y = 1:3) %>% class
[1] "data.frame"
> data.frame(x = 1:3, y = 1:3) %>% class == "data.frame"
[1] TRUE
> #uh oh
> data_frame(x = 1:3, y = 1:3) %>% class
[1] "tbl_df" "tbl" "data.frame"
> data_frame(x = 1:3, y = 1:3) %>% class == "data.frame"
[1] FALSE FALSE TRUE
> #dont use if with improper testing!
> if(data_frame(x = 1:3, y = 1:3) %>% class == "data.frame") "something"
Warning message:
In if (data_frame(x = 1:3, y = 1:3) %>% class == "data.frame") "something" :
the condition has length > 1 and only the first element will be used
> #proper
> data_frame(x = 1:3, y = 1:3) %>% inherits("data.frame")
[1] TRUE
- 3 回答
- 0 關注
- 1038 瀏覽
添加回答
舉報