在R中生成一些简单的虚拟数据
我只是想要一些随机数据来试验不同的预测模型 我的代码:在R中生成一些简单的虚拟数据,r,R,我只是想要一些随机数据来试验不同的预测模型 我的代码: x <- 0 for (i in 1:200) { num <- runif(1, 0, 500) neg <- round(runif(5, -1, 0)) percent <- ((0.01 * runif(1, 1, 10)) * num) x[i] = num + (neg * percent) } 它在for循环的最后一行代码上触发 我很希望能够解决这个问题。感谢您的帮
x <- 0
for (i in 1:200)
{
num <- runif(1, 0, 500)
neg <- round(runif(5, -1, 0))
percent <- ((0.01 * runif(1, 1, 10)) * num)
x[i] = num + (neg * percent)
}
它在for循环的最后一行代码上触发
我很希望能够解决这个问题。感谢您的帮助。谢谢大家! 克里斯已经在他的评论中指出了你的问题。然而,从
R
编程的角度来看,你做了很多坏事。以下方法更好:
N <- 200
d <- data.frame(x = rep(NA, N))
num <- runif(N, 0, 500)
neg <- sample(c(1,-1), 200, replace = TRUE) #jrdnmdhl pointed this out in his post
percent <- ((0.01 * runif(N, 1, 10)) * num)
d$x <- num + (neg * percent)
克丽丝已经在他的评论中指出了你的问题。然而,从
R
编程的角度来看,你做了很多坏事。以下方法更好:
N <- 200
d <- data.frame(x = rep(NA, N))
num <- runif(N, 0, 500)
neg <- sample(c(1,-1), 200, replace = TRUE) #jrdnmdhl pointed this out in his post
percent <- ((0.01 * runif(N, 1, 10)) * num)
d$x <- num + (neg * percent)
N评论员提到了主要问题,但如果将代码矢量化,则代码速度会快得多。此外,您对“neg”的描述与它所做的不一致。您的代码不会生成-1或1。相反,它生成-1或0。下面的代码将为neg变量生成-1或1
num = runif(200, 0, 500)
neg = sample(c(1,-1),200,replace=T)
percent = ((0.01 * runif(200, 1, 10)) * num)
x = num + (neg * percent)
评论员提到了主要问题,但如果将代码矢量化,则代码速度会快得多。此外,您对“neg”的描述与它所做的不一致。您的代码不会生成-1或1。相反,它生成-1或0。下面的代码将为neg变量生成-1或1
num = runif(200, 0, 500)
neg = sample(c(1,-1),200,replace=T)
percent = ((0.01 * runif(200, 1, 10)) * num)
x = num + (neg * percent)
neg
的长度为5,因为您为其n
参数提供了5。因此,您试图将长度为1的num
与长度为neg
相加5@Chrisss我怎样才能解决这个问题?Is如果neg
为-1或1,则应执行:neg=round(runif(200,0,1))*2-1,因为表达式将返回数字-1或0@KingDan,neg
的长度为5,因为您为其n
参数提供了5。因此,您试图将长度为1的num
与长度为neg
相加5@Chrisss我怎样才能解决这个问题?Is如果neg
为-1或1,则应执行:neg=round(runif(200,0,1))*2-1,因为表达式将返回数字-1或0@KingDan,谢谢你的回答-根据你的第二行,NA
在R中表示什么?@KingDanNA
表示缺少一个值。更具体地说,它是一个逻辑常数,既不表示TRUE
也不表示FALSE
。通常使用NA
来预分配内存,因为当您修改对象时,您可能会用实际数据替换NA
。但是,您可以使用任何东西来预先分配内存,例如9999
。有关NA
的更多信息,请阅读此内容,感谢您的回答-根据您的第二行,NA
在R中表示什么?@KingDanNA
表示缺少值。更具体地说,它是一个逻辑常数,既不表示TRUE
也不表示FALSE
。通常使用NA
来预分配内存,因为当您修改对象时,您可能会用实际数据替换NA
。但是,您可以使用任何东西来预先分配内存,例如9999
。有关NA
的更多信息,请阅读此