Yritän alustaa data.frame-kehyksen ilman rivejä. Periaatteessa haluan määrittää tietotyypit kullekin sarakkeelle ja nimetä ne, mutta en halua, että tuloksena luodaan rivejä.
Parasta, mitä olen tähän mennessä saanut aikaan, on jotakin seuraavanlaista:
df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"),
File="", User="", stringsAsFactors=FALSE)
df <- df[-1,]
Joka luo data.frame-kehyksen, jossa on yksi rivi, joka sisältää kaikki haluamani tietotyypit ja sarakkeiden nimet, mutta luo myös hyödyttömän rivin, joka on sitten poistettava.
Onko olemassa parempi tapa tehdä tämä?
Alusta se vain tyhjillä vektoreilla:
df <- data.frame(Date=as.Date(character()),
File=character(),
User=character(),
stringsAsFactors=FALSE)
Tässä'toinen esimerkki eri saraketyypeillä :
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. :
data.frame
:n alustaminen väärän tyyppisellä tyhjällä sarakkeella ei estä sellaisten rivien lisäämistä, joiden sarakkeet ovat eri tyyppisiä.
Tämä menetelmä on vain hieman turvallisempi siinä mielessä, että sinulla on oikeat saraketyypit alusta alkaen, joten jos koodisi perustuu johonkin saraketyyppien tarkistukseen, se toimii, vaikka data.frame
:ssa ei olisi yhtään riviä.
Voit käyttää read.table
-taulukkoa ja syöttötietona text
tyhjää merkkijonoa seuraavasti:
colClasses = c("Date", "character", "character")
col.names = c("Date", "File", "User")
df <- read.table(text = "",
colClasses = colClasses,
col.names = col.names)
Vaihtoehtoisesti voit määrittää col.names
merkkijonona:
df <- read.csv(text="Date,File,User", colClasses = colClasses)
Kiitos Richard Scrivenille parannuksesta