Herhangi bir satır olmadan bir data.frame başlatmaya çalışıyorum. Temel olarak, her sütun için veri türlerini belirtmek ve bunları adlandırmak, ancak sonuç olarak herhangi bir satır oluşturulmasını istemiyorum.
Şimdiye kadar yapabildiğimin en iyisi şöyle bir şeydi:
df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"),
File="", User="", stringsAsFactors=FALSE)
df <- df[-1,]
Bu da istediğim tüm veri türlerini ve sütun adlarını içeren tek satırlı bir data.frame oluşturuyor, ancak daha sonra kaldırılması gereken gereksiz bir satır da oluşturuyor.
Bunu yapmanın daha iyi bir yolu var mı?
Sadece boş vektörlerle başlatın:
df <- data.frame(Date=as.Date(character()),
File=character(),
User=character(),
stringsAsFactors=FALSE)
İşte farklı sütun türlerine sahip başka bir örnek:
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. :
Bir data.frame
in yanlış türde boş bir sütunla başlatılması, farklı türlerde sütunlara sahip satırların daha fazla eklenmesini engellemez.
Bu yöntem, başlangıçtan itibaren doğru sütun türlerine sahip olacağınız için biraz daha güvenlidir, dolayısıyla kodunuz bazı sütun türü denetimlerine dayanıyorsa, sıfır satırlı bir data.frame
ile bile çalışacaktır.
Aşağıdaki gibi metin
girişi için boş bir dize ile read.table
kullanabilirsiniz:
colClasses = c("Date", "character", "character")
col.names = c("Date", "File", "User")
df <- read.table(text = "",
colClasses = colClasses,
col.names = col.names)
Alternatif olarak col.names
in bir dize olarak belirtilmesi:
df <- read.csv(text="Date,File,User", colClasses = colClasses)
İyileştirme için Richard Scriven'a teşekkürler