我编写了一个用户定义的函数,该函数应该获取数据集和一些符号,扫描整个数据集并用缺少的值替换此数字的所有实例。代码工作正常,直到我把它放在用户定义的函数(循环和条件工作)。我无法弄清楚为什么它现在不起作用。没有警告或错误,它只是不起作用。另外,我想询问是否有办法选择在哪个列上执行此操作?
我的代码是:
repMissing = function(ds,x)
{
for(i in 1:nrow(ds))
{
for(j in 1:ncol(ds))
{
if (!is.na(ds[i,j]) && ds[i,j] == x)
{
ds[i,j] = NA
}
}
}
}
我运行了以下代码:
repMissing(diet2,-99)
出于某种原因,-99仍然不是NA。
任何建议都将受到赞赏。谢谢!
编辑:这个问题与之前的问题不同,因为我不仅询问如何执行任务,还问我的代码有什么问题,这与以前的问题不同。
答案 0 :(得分:2)
如果要在整个数据框中替换-99的所有出现,可以使用:
df[ df == -99] <- NA
将其整合回功能:
repMissing <- function(df, x) { df[ df == as.integer(x)] <- NA }
更进一步,您甚至可以指定给定数据框中要执行操作的列。请参阅下面的一些示例代码,该代码仅在“a”列中替换数据框df
中出现的所有-99:
df[, colnames(df) %in% df('a')][df[, colnames(df) %in% c('a')] == -99] <- NA