您好我是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
由于
答案 0 :(得分:1)
这比Seb建议的更容易。
c[is.na(c)] <- mean(c, na.rm = TRUE)
这里,mean函数返回一个数字(即c
中不是NA
的所有值的平均值)。然后,赋值运算符<-
会将此数字分配给c
中is.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
。