R中每行随机抽样的矢量化解决方案

R中每行随机抽样的矢量化解决方案,r,vectorization,R,Vectorization,我想将以下for循环转换为矢量化格式: for (i in 1:100){ if (runif<0.01){b<-sample(1:2,1)} else {b<-NA}} for(i in 1:100){if(runif首先制作样本向量,然后根据prob_rand进行子集设置怎么样 x <- sample( 1:no_options , 100 , repl = TRUE ) x[ runif(100) > prob_rand ] <- NA x prob

我想将以下for循环转换为矢量化格式:

for (i in 1:100){ if (runif<0.01){b<-sample(1:2,1)} else {b<-NA}}

for(i in 1:100){if(runif首先制作样本向量,然后根据
prob_rand
进行子集设置怎么样

x <- sample( 1:no_options , 100 , repl = TRUE )
x[ runif(100) > prob_rand ] <- NA

x prob\u rand]先生成样本向量,然后根据
prob\u rand
进行子集设置怎么样

x <- sample( 1:no_options , 100 , repl = TRUE )
x[ runif(100) > prob_rand ] <- NA

x prob\u rand]您的第一个示例不起作用,我想您的意思是:

for (i in 1:100){ if (runif<0.01){b<-sample(1:2,1)} else {b<-NA}}

你的第一个例子不起作用,我想你的意思是:

for (i in 1:100){ if (runif<0.01){b<-sample(1:2,1)} else {b<-NA}}

在data.frame中可能是

df = data.frame(r=runif(100))
df$b = ifelse(df$r<0.01,sample(1:2,1),NA)
df=data.frame(r=runif(100))

df$b=ifelse(数据帧中的df$r可能是

df = data.frame(r=runif(100))
df$b = ifelse(df$r<0.01,sample(1:2,1),NA)
df=data.frame(r=runif(100))

df$b=ifelse(df$r您也可以使用rbinom

n <- 100
(runif(n) < 0.1) * sample(2, n, replace = TRUE)
rbinom(n, size = 1, prob = 0.1) * sample(2, n, replace = TRUE)

n您也可以使用rbinom

n <- 100
(runif(n) < 0.1) * sample(2, n, replace = TRUE)
rbinom(n, size = 1, prob = 0.1) * sample(2, n, replace = TRUE)

n是否可以赋值而不是NA nothing?因此,如果已经存在一个值,那么就保留该值?我很难理解你的意思。但我猜你的意思是,某个向量
b
已经存在,如果掷骰子的数量大于
概率
,你想替换其中的值,但如果不,那就别管
b
。如果是这样的话,那就用
b
替换
NA
。可以赋值而不是不赋值吗?所以如果已经有一个值,那就保留那个值吧?我很难理解你的意思。但我猜你的意思是,某个向量
b
已经存在了sts,如果骰子滚动大于
prob\u rand
,则要替换其中的值,但如果不是,则只需离开
b
。如果是这种情况,则只需将
NA
替换为
b