使用stringsAsFactors = FALSE创建空数据框

Bar*_*ara 1 r

我正在尝试创建一个空数据框,其中数据将是字符串,并且stringsAsFactors设置为FALSE.但是,当我这样做时,它似乎不记得stringsAsFactors的值.

如果我创建一个空行,它可以工作,如下所示:

> df <- data.frame(a="", b="", stringsAsFactors=FALSE)
> new.row <- c("a", "z")
> df <- rbind(df, new.row)
> df
  a b
1    
2 a z
> df[2,1] <- "q"
> df
  a b
1    
2 q z
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个空的数据框.但是,当我这样做时,它会将我后来添加的字符串视为因素:

> df2 <- data.frame(a=character(), b=character(), stringsAsFactors=FALSE)
> df2 <- rbind(df2, new.row)
> df2
  X.a. X.z.
1    a    z
> df2[2,1] <- "q"
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "q") :
  invalid factor level, NA generated
Run Code Online (Sandbox Code Playgroud)

如何在没有字符串因子的情况下创建空数据框?

mne*_*nel 5

rbind.data.frame首先删除所有零行和零列data.frames,然后将其余参数强制转换为data.frames.这种内部强制使用强制中的defaultstringsAsFactors.(见的帮助rbinddata frame methods.

您可以通过设置来设置此值

options(stringsAsFactors=FALSE)
# now it works as you wish 
str(rbind(df2,new.row))
# 'data.frame': 1 obs. of  2 variables:
#  $ X.a.: chr "a"
#  $ X.z.: chr "z"
Run Code Online (Sandbox Code Playgroud)