【问题标题】:Replicate base::data.frame behavior with dplyr::tibble使用 dplyr::tibble 复制 base::data.frame 行为
【发布时间】:2021-05-04 18:44:29
【问题描述】:

我想从环境中找到的对象创建一个名称向量,并将该向量放在tibble 中。当您使用base::data.frame() 时,它可以工作,如下所示:

library(tidyverse)

# three objects in the environment

str_c("x", 1:3) %>% 
  map(
    ~assign(., "", envir = .GlobalEnv)
  )

data.frame(
  v1 = ls()
  )

返回

  v1
1 x1
2 x2
3 x3

但如果我尝试使用dplyr::tibble(),我会得到

tibble(
  v1 = ls()
)

# A tibble: 1 x 1
  v1   
  <chr>
1 ~    

如何让tibble 复制data.frame 的行为?

【问题讨论】:

  • 我不想做出评判,但你有理由这样做吗?
  • 纯粹的变态

标签: r dplyr tibble


【解决方案1】:

使用tibble 中的enframe,已更新以删除多余的名称向量:

library(tidyverse)

# three objects in the environment

str_c("x", 1:3) %>% 
  map(
    ~assign(., "", envir = .GlobalEnv)
  )
#> [[1]]
#> [1] ""
#> 
#> [[2]]
#> [1] ""
#> 
#> [[3]]
#> [1] ""

enframe(ls(), value = "v1", name = NULL)
#> # A tibble: 3 x 1
#>   v1   
#>   <chr>
#> 1 x1   
#> 2 x2   
#> 3 x3

reprex package (v2.0.0) 于 2021-05-06 创建

【讨论】:

  • 关闭,但提供了一个多余的name向量
  • @tomw 修改答案以删除名称向量。
猜你喜欢
  • 2019-03-06
  • 2015-04-22
  • 1970-01-01
  • 2016-11-09
  • 2016-07-11
  • 2014-11-15
  • 1970-01-01
  • 2021-08-15
相关资源
最近更新 更多