【发布时间】:2014-06-17 18:49:43
【问题描述】:
我的代码在 R 中如下:
replaceNA<- function(myData,limit){
numNA<- rowsum(is.na(myData))
targetRows<- which(numNA<=limit)
targetCols<- length(names(myData))
for(row in targetRows){
for(col in 1:targetCols){
myData[row,col][is.na(myData[row,col])]<-1
}
}
}
我正在尝试遍历 myData 中的每个元素,并将行的所有 NA 替换为 1,如果该行的 NA 数量不超过该行。我用 print 语句测试了我的代码,发现迭代工作完美(尽管不是最有效的代码),如果我通过在函数的最后一个括号之前放入 fix(myData) 来检查修改后的 myData,我看到我的函数完美运行(对于满足限制条件的行,NA 被替换为 1)。但是,当我在函数终止后检查 myData 时,myData 不会显示 replaceNA 所做的更改。
我知道存储修改后的 myData 存在问题,但我不确定如何正确存储它。
【问题讨论】:
-
功能就像拉斯维加斯。函数中发生的事情停留在函数中(除非你明确地返回它)。
-
另外,这里的rowsum是什么?是用户自定义函数吗?
-
rowsum() 存在于 R 中:stat.ethz.ch/R-manual/R-patched/library/base/html/rowsum.html
-
对不起,您是对的,在这种情况下必须使用 rowSums()。谢谢!
标签: r for-loop dataset storage