我目前正在处理以下问题:
鉴于sample <- rexp(100, rate = 1.5)
,样本的中位数通常小于平均值。生成一个向量between_median_mean
,该向量包含大于(或等于)样本中位数且小于(或等于)样本平均值的所有样本值。
我的答案是:between_median_mean <- c((sample>=median(sample)&mean(sample)<=sample))
但是,我只是得到对/错,而不是按照问题的要求生成值。如果有人可以指出我做错了/错过的事情,我将不胜感激!
编辑:我得到的输出是:例如[1] TRUE FALSE TRUE TRUE TRUE
。
如果要返回实际值,则需要使用布尔向量来过滤初始样本。这是可以完成此任务的多种方法之一:
sample <- rexp(100, rate = 1.5)
test_condition_res <- sample >= median(sample) & mean(sample) <= sample
#Filter sample vector to return only TRUE values from the previous condition
between_median_mean <- sample[test_condition_res]
希望这会有所帮助。
这里是一种解决方案:
(between_median_mean <- sample[sample >= median(sample) & sample <= mean(sample)])
方括号'[]'用于子设置。您说的是,仅显示满足上述条件的样本值。
正如@sconfluentus提到的,您需要做的是:
between_median_mean1 <- sample[sample>=median(sample) & mean(sample)<= sample]
即要获取向量的相关切片,您需要通过new_vector = vector [condition]对向量进行切片。您编写了说明其是否为真的条件,现在只需要对子集是否应包含该值应用TRUE / FALSE。