首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R loops+predict()

R loops+predict()
EN

Stack Overflow用户
提问于 2011-12-06 20:50:01
回答 2查看 834关注 0票数 0

嗨,我是R(一般的初级程序员)的初学者,帮助文档简直要了我的命。

假设我有一个矩阵a,b,c,d,我完成了2种预测回归,我的目标是对测试数据集中的变量"a“执行a~b+c+d (),但c中充满了NAs。如何使用我创建的模型替换c中的NAs?

如果有用的话,这是我在Octave中会做的那种循环,

代码语言:javascript
复制
 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

谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-12-06 22:40:29

它甚至比Seb建议的更容易。

代码语言:javascript
复制
c[is.na(c)] <- mean(c, na.rm = TRUE)

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

另一种方法是尝试将参数na.action = na.omit传递给predict函数。

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

代码语言:javascript
复制
for(i in seq_along(c))
{
  if(is.na(c[i]))
  {  
    c(i) <- some_function(b[i], d[i])
  }
}

但是请注意,在R中,就像在Octave中一样,循环通常不如直接对向量进行操作。

票数 1
EN

Stack Overflow用户

发布于 2011-12-06 21:37:23

你的意思是像这样吗?

代码语言:javascript
复制
c <- ifelse(is.na(c), mean(c, na.rm=TRUE), c)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8400146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档