2017-01-26 1 views
1

Ist es möglich zu spezifizieren, dass read_csv aus dem readr Paket ein data.frame anstelle eines tibble zurückgeben sollte? Ich habe es vielleicht übersehen, aber ich konnte eine solche Option im Pakethandbuch nicht finden.readr (oder andere Pakete von tidyverse) mit data.frame anstelle von tibble

Mein Problem ist, dass ein Teil meines Codes aus Pre-Tibble-Zeiten nicht mehr läuft, weil die Benennung der Spalten deaktiviert ist. Ich Tibbles zu Datenrahmen mit as.data.frame umwandeln kann, aber die Benennung der Spalten noch unterschiedlich sein im Vergleich zu, wenn ich einen Datenrahmen in erster Linie geschaffen hatte (Ausgabe kommentiert out):

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 

ich konnte (und wird Für zukünftige Projekte verwenden Sie das Paket checkpoint, um Paketversionen zu verwenden, als ich diese Projekte ursprünglich ausgeführt habe. Allerdings suche ich jetzt nach einer Option, bei der ich angeben kann, ob ich einen tibble oder einen Datenrahmen bekommen soll.

Diese Frage gilt auch für andere Pakete aus dem Tidyverse (z. B. dplyr).

Antwort

3

Sie können make.names() verwenden, um diese Inkonsistenz zu hacken:

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 
Verwandte Themen