繁体   English   中英

readr(或来自tidyverse的其他包)与data.frame而不是tibble

[英]readr (or other packages from tidyverse) with data.frame instead of tibble

是否可以指定read_csvreadr包装应返回data.frame而不是tibble的? 我可能忽略了它,但我在包装手册中找不到这样的选项。

我的问题是我的一些来自pre-tibble时间的代码不再运行,因为列的命名是关闭的。 我可以使用as.data.frame将数据块转换为数据帧,但与我首先创建数据框(输出已注释掉)相比,列的命名仍然不同:

df <- data.frame("((hello))" = 1)
df
#  X..hello..
# 1          1
tb <- tibble("((hello))" = 1)
tb
## A tibble: 1 × 1
#  `((hello))`
#       <dbl>
#1           1
as.data.frame(tb)
#  ((hello))
#1         1

我可以(以及将来的项目)使用checkpoint包来使用我最初运行这些项目时的软件包版本。 但是,现在我正在寻找一个选项,我可以指定是获得tibble还是数据帧。

此问题也适用于来自tidyverse的其他包(例如, dplyr )。

您可以使用make.names()来解决这种不一致问题:

dfconv <- function(x) {
     return(setNames(as.data.frame(x),
              make.names(names(x))))
}

library(tibble)
df <- data.frame("((hello))" = 1)
tb <- tibble("((hello))" = 1)
identical(dfconv(tb),df)  ## TRUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM