生成一个包含大于和小于值的向量

问题描述 投票:1回答:3

我目前正在处理以下问题:

鉴于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

r vector
3个回答
0
投票

您将返回布尔向量,而不是实际值

如果要返回实际值,则需要使用布尔向量来过滤初始样本。这是可以完成此任务的多种方法之一:

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]

希望这会有所帮助。


0
投票

这里是一种解决方案:

(between_median_mean <- sample[sample >= median(sample) & sample <= mean(sample)])

方括号'[]'用于子设置。您说的是,仅显示满足上述条件的样本值。


0
投票

正如@sconfluentus提到的,您需要做的是:

 between_median_mean1 <- sample[sample>=median(sample) & mean(sample)<= sample]

即要获取向量的相关切片,您需要通过new_vector = vector [condition]对向量进行切片。您编写了说明其是否为真的条件,现在只需要对子集是否应包含该值应用TRUE / FALSE。

© www.soinside.com 2019 - 2024. All rights reserved.