R循环+预测()

时间:2011-12-06 12:50:01

标签: r

您好我是R的初学者(一般的初学者),帮助文件绝对会让我失望。

假设我有一个矩阵 [A B C D] 我完成了某种a~b + c + d的2回归。我的目标是为测试数据集中的变量“a”做一个predict(),但是c充满了NA。如何使用我创建的模型替换c中的NA?

如果它有助于这是我在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

由于

2 个答案:

答案 0 :(得分:1)

这比Seb建议的更容易。

c[is.na(c)] <- mean(c, na.rm = TRUE)

这里,mean函数返回一个数字(即c中不是NA的所有值的平均值)。然后,赋值运算符<-会将此数字分配给cis.na返回TRUE的每个元素。


作为替代方案,请尝试将参数na.action = na.omit传递给预测函数。


您的Octave脚本的直接翻译类似于

for(i in seq_along(c))
{
  if(is.na(c[i]))
  {  
    c(i) <- some_function(b[i], d[i])
  }
}

但请注意,在R中,与Octave一样,循环通常不如直接在矢量上操作。

答案 1 :(得分:0)

你是说像

这样的意思吗?
c <- ifelse(is.na(c), mean(c, na.rm=TRUE), c)

您可能需要查看帮助文件?ifelse?is.na