[英]In R, how can I create a new list-column variable in a tibble that doesn't depend on any prior columns?
[英]How to create a list-column with tibble::tribble()?
使用tribble()
從頭開始構建 tibble 時,如何將列設置為“列表列”,以便它可以包含不同類的數據?
例如,考慮以下代碼,其中我有一個邏輯值和一個數值。
library(tibble)
some_numeric <- 5
some_logical <- TRUE
my_df <-
tribble(~name, ~value,
"logical", some_logical,
"numeric", some_numeric)
而我期待my_df
看起來像:
## # A tibble: 2 x 2
## name value
## <chr> <list>
## 1 logical <lgl [1]>
## 2 numeric <dbl [1]>
我實際上得到了這個:
## # A tibble: 2 x 2
## name value
## <chr> <dbl>
## 1 logical 1
## 2 numeric 5
當然,有這樣一種使用tibble()
的方法:
tibble(name = c("logical", "numeric"),
value = list(some_logical, some_numeric))
## # A tibble: 2 x 2
## name value
## <chr> <list>
## 1 logical <lgl [1]>
## 2 numeric <dbl [1]>
但我想使用tribble()
逐行創建它,以下也不起作用:
tribble(~name, ~value,
"logical", list(some_logical),
"numeric", list(some_numeric))
## # A tibble: 2 x 2
## name value
## <chr> <list>
## 1 logical <list [1]> ## <--- I don't want nested list but nested *logical* vec
## 2 numeric <list [1]> ## <--- I don't want nested list but nested *double* vec
所以我的問題是,有沒有一種簡單的方法可以使用tribble()
來設置一個列表列,其中每個值都是嵌套向量而不是嵌套列表?
library(tidyverse)
f <- tribble(~name, ~value,
"logical", as.vector("some_logical", mode = "list"),
"numeric", as.vector("some_logical", mode = "list"))
f
#> # A tibble: 2 x 2
#> name value
#> <chr> <list>
#> 1 logical <list [1]>
#> 2 numeric <list [1]>
f$value
#> [[1]]
#> [[1]][[1]]
#> [1] "some_logical"
#>
#>
#> [[2]]
#> [[2]][[1]]
#> [1] "some_logical"
由代表 package (v1.0.0) 於 2021 年 2 月 22 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.