Es mēģinu inicializēt data.frame bez rindām. Būtībā es gribu norādīt datu tipus katrai kolonnai un nosaukt to nosaukumus, bet rezultātā neveidot nevienu rindu.
Labākais, ko man līdz šim ir izdevies izdarīt, ir kaut kas līdzīgs:
df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"),
File="", User="", stringsAsFactors=FALSE)
df <- df[-1,]
Tas izveido data.frame ar vienu rindu, kurā ir visi vajadzīgie datu tipi un kolonnu nosaukumi, bet arī izveido nevajadzīgu rindu, kas pēc tam ir jādzēš.
Vai ir kāds labāks veids, kā to izdarīt?
Vienkārši inicializējiet to ar tukšiem vektoriem:
df <- data.frame(Date=as.Date(character()),
File=character(),
User=character(),
stringsAsFactors=FALSE)
Šeit ir cits piemērs ar dažādiem kolonnu tipiem:
df <- data.frame(Doubles=double(),
Ints=integer(),
Factors=factor(),
Logicals=logical(),
Characters=character(),
stringsAsFactors=FALSE)
str(df)
> str(df)
'data.frame': 0 obs. of 5 variables:
$ Doubles : num
$ Ints : int
$ Factors : Factor w/ 0 levels:
$ Logicals : logi
$ Characters: chr
N.B. :
Inicializējot data.frame
ar tukšu nepareiza tipa kolonnu, netiek novērsta turpmāku rindu pievienošana, kurās ir dažādu tipu kolonnas.
Šī metode ir tikai mazliet drošāka tādā ziņā, ka jums jau no paša sākuma būs pareizie kolonnu tipi, tāpēc, ja jūsu kods paļaujas uz kolonnu tipu pārbaudi, tas darbosies pat tad, ja data.frame
ar nulli rindu.
Varat izmantot read.table
ar tukšu virkni kā ievades text
šādi:
colClasses = c("Date", "character", "character")
col.names = c("Date", "File", "User")
df <- read.table(text = "",
colClasses = colClasses,
col.names = col.names)
Alternatīvi, norādot col.names
kā virkni:
df <- read.csv(text="Date,File,User", colClasses = colClasses)
Paldies Richard Scriven par uzlabojumu