我想創建一個空數據框,其中數據將是字符串,並且stringsAsFactors設置爲FALSE。看起來,當我這樣做時,它不記得stringsAsFactors的價值。但使用stringsAsFactors創建空數據框= FALSE
> 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
,我想一個空的數據幀:
它的工作原理,如果我創建一個空白行,像這樣。當我這樣做,雖然,它把我後來添加爲因素的字符串:
> 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
我怎樣才能創建一個沒有串因素的空數據幀?
你需要使用一個data.frame如果所有列是性格?這將工作:'mat < - matrix('',nr = 1,nc = 2,dimnames = list(NULL,c('a','b'))); new.row < - c('a','z'); rbind(mat,new.row)' – jbaums
我可能是錯的,但那是一個「過程」選項,而不是一個屬性或某個對象的東西。在data.frame創建過程中,數據按照您用'stringsAsFactors'請求的方式處理,然後使用正確的類型進行存儲。正如你注意到的那樣,如果不能隱式輸入類型,你會遇到問題。你不能按照你想要的方式做你想做的事。你可以用as.character()來轉換每一次賦值,但是如果你經常使用字符串和'rbind',很可能你做錯了。 – mlt
謝謝,使用矩陣來解決我的問題,但我不明白爲什麼有一個表中所有列包含字符串的表將被視爲數據框的不恰當使用。 – Barbara