在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中表示什么?@KingDan
NA
表示缺少一个值。更具体地说,它是一个逻辑常数,既不表示
TRUE
也不表示
FALSE
。通常使用
NA
来预分配内存,因为当您修改对象时,您可能会用实际数据替换
NA
。但是,您可以使用任何东西来预先分配内存,例如
9999
。有关
NA
的更多信息,请阅读此内容,感谢您的回答-根据您的第二行,
NA
在R中表示什么?@KingDan
NA
表示缺少值。更具体地说,它是一个逻辑常数,既不表示
TRUE
也不表示
FALSE
。通常使用
NA
来预分配内存,因为当您修改对象时,您可能会用实际数据替换
NA
。但是,您可以使用任何东西来预先分配内存,例如
9999
。有关
NA
的更多信息,请阅读此