R:如何替换data.frame的元素?
我试图将包含“#N/a”的data.frame的元素替换为“NULL”,但遇到了以下问题:R:如何替换data.frame的元素?,r,replace,dataframe,R,Replace,Dataframe,我试图将包含“#N/a”的data.frame的元素替换为“NULL”,但遇到了以下问题: foo <- data.frame("day"= c(1, 3, 5, 7), "od" = c(0.1, "#N/A", 0.4, 0.8)) indices_of_NAs <- which(foo == "#N/A") replace(foo, indices_of_NAs, "NULL") fooreplace函数需要一个向量,您提供的是data.frame 您应该尝试使用NA和
foo <- data.frame("day"= c(1, 3, 5, 7), "od" = c(0.1, "#N/A", 0.4, 0.8))
indices_of_NAs <- which(foo == "#N/A")
replace(foo, indices_of_NAs, "NULL")
fooreplace函数需要一个向量,您提供的是data.frame
您应该尝试使用NA
和NULL
而不是当前使用的字符值。否则,您将无法利用R的所有功能来处理缺少的值
编辑
您可以使用apply函数,或执行以下操作:
foo <- data.frame(day= c(1, 3, 5, 7), od = c(0.1, NA, 0.4, 0.8))
idx <- which(is.na(foo), arr.ind=TRUE)
foo[idx[1], idx[2]] <- "NULL"
fooNULL实际上意味着“无”,而不是“缺失”,因此它不能代替实际值-因为缺失的R使用NA
您可以使用is.na的替换方法直接更新所选元素,这将产生逻辑结果。(使用which for index只能用于is.na,直接使用[invokes list access,这是导致错误的原因)
为什么不呢
x$col[is.na(x$col)]<-value
x$col[is.na(x$col)]谢谢Shane,你建议我将data.frame转换为向量,执行该函数,然后将其转换回data.frame吗?我将使用你建议的数据格式。例如,“任何数字列都不会与字符串“#N/a”匹配是什么意思?我如何检查我正在查看的列类型?很好的解决方案。在用NA替换值后,如何将列重新解释为数字?我有几十列,很难分辨哪些列的NA值已更改。
x$col[is.na(x$col)]<-value