2017-09-12 5 views
0

je peux initialiser une trame de données avec une colonne POSIXct avec le code comme ceci:R - Comment ajouter une colonne POSIXct vide à un data.frame/tibble déjà existant?

df <- data.frame(a=numeric(), b=character(), c=as.POSIXct(character())) 

Cependant, si je tente d'ajouter une colonne POSIXct vide à un data.frame ou Tibble qui existe déjà, la colonne se transforme au type/classe numérique.

> df <- tibble("Index"=numeric(10)) 
> df[,"date"] <- as.POSIXct(character()) 
> df[,"date"] %>% pull %>% class() 
[1] "numeric 

Existe-t-il une méthode pour résoudre ce problème?

+1

'as.POSIXct (représentant (NA, 10))'? Vous ne pouvez pas avoir un "POSIXct" vraiment "vide" Je ne pense pas que – thelatemail

+1

'dat [," date "] <- as.POSIXct (NA)' fonctionnera aussi. – eipi10

Répondre

0

serait ce travail pour vous (le plus à faire ce que eipi10 Suggest dans his comment)

library(tibble) # install.packages(c("dplyr"), dependencies = TRUE) 
df <- tibble(a = 1:3, b = letters[a], c = as.POSIXct(NA)) 

df 
#> # A tibble: 3 x 3 
#>  a  b  c 
#> <int> <chr> <dttm> 
#> 1  1  a  NA 
#> 2  2  b  NA 
#> 3  3  c  NA 

str(df) 
#> Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 
#> 3 obs. of 3 variables: 
#> $ a: int 1 2 3 
#> $ b: chr "a" "b" "c" 
#> $ c: POSIXct, format: NA NA ... 

ou peut-être

df <- tibble(a = numeric(), b = character(), c = as.POSIXct(NA)) 
str(df) 
#> Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 
#> 0 obs. of 3 variables: 
#> $ a: num 
#> $ b: chr 
#> $ c:Classes 'POSIXct', 'POSIXt' num(0)