嗨,我是R(一般的初级程序员)的初学者,帮助文档简直要了我的命。
假设我有一个矩阵a,b,c,d,我完成了2种预测回归,我的目标是对测试数据集中的变量"a“执行a~b+c+d (),但c中充满了NAs。如何使用我创建的模型替换c中的NAs?
如果有用的话,这是我在Octave中会做的那种循环,
for i:length(c)
if c(i)=NA
c(i)=some_function(b,d);<---- I tried to bold this but it came out wrong
end谢谢
发布于 2011-12-06 22:40:29
它甚至比Seb建议的更容易。
c[is.na(c)] <- mean(c, na.rm = TRUE)在这里,mean函数返回一个数字(即c中所有不是NA的值的平均值)。然后,赋值运算符<-将这个数字赋值给c中的每个元素,其中is.na返回TRUE。
另一种方法是尝试将参数na.action = na.omit传递给predict函数。
您的Octave脚本的直接翻译类似于
for(i in seq_along(c))
{
if(is.na(c[i]))
{
c(i) <- some_function(b[i], d[i])
}
}但是请注意,在R中,就像在Octave中一样,循环通常不如直接对向量进行操作。
发布于 2011-12-06 21:37:23
你的意思是像这样吗?
c <- ifelse(is.na(c), mean(c, na.rm=TRUE), c)您可能需要检查帮助文件?ifelse和?is.na。
https://stackoverflow.com/questions/8400146
复制相似问题