簡體   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