问题

我试图初始化data.frame没有任何行.基本上,我想为每个列指定数据类型并给它们命名,但没有作为结果创建的任何行.

到目前为止我能做到的最好的是:

df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"), 
                 File="", User="", stringsAsFactors=FALSE)
df <- df[-1,]

这会创建一个包含所有数据类型和列名称的单行的data.frame,但也会创建一个无用的行,然后需要删除它.

有更好的方法吗?



解决方法

只需使用空向量初始化它:

df <- data.frame(Date=as.Date(character()),
                 File=character(), 
                 User=character(), 
                 stringsAsFactors=FALSE) 

以下是使用不同列类型的其他示例:

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 不会阻止进一步添加具有不同类型列的行. 这种方法只是一点点更安全,从一开始就有正确的列类型,因此如果你的代码依赖于一些列类型检查,它将工作,甚至与一个 data.frame ,且为零行.




相关问题推荐