使用 data.frame 而不是 tibble 的 readr(或来自 tidyverse 的其他包)
readr (or other packages from tidyverse) with data.frame instead of tibble
是否可以指定 readr
包中的 read_csv
应该 return 一个 data.frame 而不是一个 tibble?我可能忽略了它,但我在包手册中找不到这样的选项。
我的问题是 pre-tibble 次我的一些代码不再 运行 因为列的命名已关闭。我可以使用 as.data.frame
将 tibbles 转换为数据框,但与我最初创建数据框时相比,列的命名仍然不同(输出注释掉):
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
包来使用我最初 运行 这些项目时的包版本。但是,现在我正在寻找一个选项,我可以在其中指定是获取小标题还是数据框。
这个问题也适用于 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
是否可以指定 readr
包中的 read_csv
应该 return 一个 data.frame 而不是一个 tibble?我可能忽略了它,但我在包手册中找不到这样的选项。
我的问题是 pre-tibble 次我的一些代码不再 运行 因为列的命名已关闭。我可以使用 as.data.frame
将 tibbles 转换为数据框,但与我最初创建数据框时相比,列的命名仍然不同(输出注释掉):
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
包来使用我最初 运行 这些项目时的包版本。但是,现在我正在寻找一个选项,我可以在其中指定是获取小标题还是数据框。
这个问题也适用于 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