基于R中的条件隔离向量的值

时间:2018-04-06 16:55:20

标签: r

我创建了一个函数:

rcos2 <- function(x) {
  ((cos(x))^2)/3.142813
}

以及结果样本:

sample <- rcos2(runif(1000,0,2*pi))

我想使用条件:

maxdens <- max(sample)

要查找满足此条件的值:

accepted <- ifelse(runif(1000,0,2*pi) < (sample/maxdens), TRUE, FALSE)

基本上我要问的是,我如何只绘制“接受”中的值?那将被计算为TRUE?

1 个答案:

答案 0 :(得分:2)

一种方法是

set.seed(1)
r <- runif(1000,0,2*pi)

sample <- rcos2(r)

maxdens <- max(sample)

plot(r[r < sample/max(sample)])

或者不存储中间值

set.seed(1)
r <- runif(1000,0,2*pi)

plot(r[r < rcos2(r)/max(rcos2(r))])

enter image description here

方括号的使用是R中的标准子集化语法 r < rcos2(r)/max(rcos2(r))创建一个与r长度相同的逻辑向量,并将其放在方括号内,只选择其索引为r的{​​{1}}元素并绘制。