簡體   English   中英

無效的因子水平,NA生成

[英]invalid factor level, NA generated

初學者在這里。

我正在嘗試將行添加到現有數據框。 我制作了一個新的向量(如下),然后嘗試將其綁定到原始數​​據幀。 收到一些警告消息。

#append new row
new_row <- c(50, 22, "Roberto", "Bolano", "MALE", "2003-07-15")

#bind to original data frame
writers_df_large <- rbind(writers_df, new_row)

警告消息:1:在[<-.factor*tmp* ,ri,value =“ Roberto”)中:無效的因子水平,生成了NA

2:在[<-.factor*tmp* ,ri,value =“ Bolano”)中:無效的因子水平,生成了NA

3:在[<-.factor*tmp* ,ri,value =“ 2003-07-15”)中:無效的因子級別,生成了NA

StringsAsFactors = FALSE應該可以解決此問題,但是我不確定該如何解決。

剛開始使用角色時,可能會減輕您的壓力,之后再放松自己的工作范圍(可能會令人沮喪)。 因此,首先,強制所有因子列以

writers_df_large[] <- lapply(writers_df_large, function(x) {
    if(is.factor(x)) as.character(x) else x
})

要么

v <- vapply(writers_df_large, is.factor, NA)
writers_df_large[v] <- lapply(writers_df_large[v], as.character)

其次,為新行使用一個列表 ,因為使用c()會將所有值強制轉換為字符。

new_row <- list(50, 22, "Roberto", "Bolano", "MALE", "2003-07-15")

現在,您可以使用rbind()添加新行

rbind(writers_df_large, new_row)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM