我正在尝试保存下面代码的输出。我知道“打印”是问题,但我不知道是什么有用。
我通常想知道是否没有其他方式而不是for-loop:对于vector(x)中的每个值,我想绘制一个新的随机数(这里使用runif)并将其与给定值匹配(这里例如0.5)。根据结果,x的新值应存储在向量x2中(类似于下面的if-else示例)。放弃for循环,我找不到总是为向量x中的每个值绘制一个新的随机数的方法。 我将非常感谢任何帮助!
x <- c(2,2,2,3,3,3)
for(i in x){
if(runif(1) <= 0.5){
print(i + 1)
} else {
print(i)
}
}
答案 0 :(得分:2)
或者您可以使用lapply
,然后您不必每步都修改循环外的对象。
x <- c(2,2,2,3,3,3)
x2 <- unlist(lapply(x, function(x){
if(runif(1) <= 0.5) return(x +1)
return(x)
}))
x2
答案 1 :(得分:1)
试试这段代码:
x <- c(2,2,2,3,3,3)
x2<-NULL
for(i in 1:length(x)){
if(runif(1) <= 0.5){
x2[i]<-1
} else {
x2[i]<-2
}
}
您的输出
x2
[1] 1 2 2 1 2 1
在x2
中,您的随机数字的给定值(1和2)与runif
概率相关。
这一行在同一行:
ifelse(runif(n = length(x))<=0.5,1,2)
[1] 1 2 2 2 1 1