Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何替换data.frame的元素?_R_Replace_Dataframe - Fatal编程技术网

R:如何替换data.frame的元素?

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和

我试图将包含“#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
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