如何将向量转换为tibble?为何as_tibble_row等函数无法调用?
嘿,这个问题我太熟了!核心原因很简单:as_tibble_row() 和 as_tibble_col()(包括文档里提到的as_tibble_column())是tibble 3.0.0版本才新增的函数,而你当前用的是tibble 2.1.3(属于tidyverse 3.0.1),自然找不到这些函数啦。
针对你的需求,给你两个版本的解决方案:
1. 把向量转为单行tibble(替代as_tibble_row())
在低版本tibble里,有两种简单方法实现:
- 方法一:用
tibble()配合!!!解包向量:
my_vec <- c(a = 1, b = 2) tibble::tibble(!!!my_vec)
输出结果:
# A tibble: 1 x 2 a b <dbl> <dbl> 1 1 2
- 方法二:先把向量转成列表,再转成tibble:
as_tibble(as.list(my_vec))
同样能得到一模一样的单行结果。
2. 把向量转为单列tibble(替代as_tibble_col())
你已经试过enframe()了,如果想要只保留值列(去掉名称列),可以直接指定name = NULL:
tibble::enframe(c(a = 1, b = 2), name = NULL)
输出结果:
# A tibble: 2 x 1 value <dbl> 1 1 2 2
另外也可以直接用tibble()包裹,完全不会有警告:
tibble(value = c(a = 1, b = 2))
关于文档的小补充
你说文档里引用了这些不存在的函数,这是因为文档对应的是tibble的新版本,和你当前使用的旧版本不匹配。如果想要直接用as_tibble_row()和as_tibble_col(),只需要升级tibble到3.0.0及以上版本就行:
install.packages("tibble")
内容的提问来源于stack exchange,提问作者postylem
相关产品推荐
相关产品推荐

