初学者。
我正在尝试向现有数据框追加一行。我创建了一个新的向量(下面),然后尝试将其绑定到原始数据框。收到一些警告信息。
#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
应该解决这个问题,但我不知道如何解决这个问题。
答案 0 :(得分:4)
一开始你可能不那么紧张地处理角色,然后在以后让自己陷入困境(他们可能非常令人沮丧)。首先,使用
将所有因子列强制转换为字符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)