首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将tibble指定为tibble中的嵌套单元格

将tibble指定为tibble中的嵌套单元格
EN

Stack Overflow用户
提问于 2022-11-16 21:24:37
回答 1查看 25关注 0票数 1

如果有两只老虎,我想把一只老虎指定为另一只老虎的一个细胞。然而,当前的方法不断地将我的子Ti球转换成不同的格式,这会导致错误。

我知道我想做什么是可能的:

代码语言:javascript
复制
library(dplyr)

desired = tibble(
  row = 1:4,
  nested = list(
    tibble(text = c("a","b","c")),
    tibble(numbers = 1:4),
    tibble(label = c("high", "med", "low"), value = c(10, 5, 0)),
    NA
  )
)

这段代码产生了两列的tibble。第二列包含不同大小和内容的碎片。

但是,我不能用递增的步骤来构造它:

代码语言:javascript
复制
library(dplyr)

# outer tibble
df = tibble(row = 1:4)
# inner tibbles
t1 = tibble(text = c("a","b","c"))
t2 = tibble(numbers = 1:4)
t3 = tibble(label = c("high", "med", "low"), value = c(10, 5, 0))

# setup column of type tibble to assign into
df = df %>%
  mutate(nested = purrr::map(row, ~{ tibble() }))

# assign (fails)
df$nested[1] = t1 # no error but df$nested[1] is of type character not tibble
df$nested[2] = t2 # no error but df$nested[2] is of type int not tibble
df$nested[3] = t3 # gives warning and only one column of t3 is assigned

我收到的警告是:

df$nested3 3中的

= t3 :要替换的项数不是替换长度的倍数

这种方法的结果如下:

代码语言:javascript
复制
> df
# A tibble: 4 x 2
    row nested          
  <int> <list>          
1     1 <chr [3]>       
2     2 <int [4]>       
3     3 <chr [3]>       
4     4 <tibble [0 × 0]>

我如何在现有的(外部) tibble中将(内部的) tibbles分配给单个的单元格,从而最终得到嵌套的tibbles?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-16 21:37:23

使用[[而不是[可以这样做:

代码语言:javascript
复制
library(dplyr, w = FALSE)

df <- tibble(row = 1:4, nested = vector("list", 4))

df$nested[[1]] <- t1
df$nested[[2]] <- t2
df$nested[[3]] <- t3
df$nested[[4]] <- NA

df
#> # A tibble: 4 × 2
#>     row nested          
#>   <int> <list>          
#> 1     1 <tibble [3 × 1]>
#> 2     2 <tibble [4 × 1]>
#> 3     3 <tibble [3 × 2]>
#> 4     4 <lgl [1]>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74467413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档