初学
我正在尝试将一行附加到现有的数据帧。我制作了一个新的矢量(下图),然后尝试将其绑定到原始数据帧。收到一些警告信息。
#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: In [<-.factor
(*tmp*
, ri, value = "Bolano"):无效因子水平,NA生成
3: In [<-.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)