x <- c(1,2,3,4,5,6)
我想求出向量x的平均值,同时排除向量中最小和最大的数,谢谢!答案应该是3.5我试过这个和其他方法,但没有运气!
3.5
mean(g,-which.min(g),-which.max(g))
lf5gs5x21#
可以使用range()函数返回包含x的最小值和最大值的向量。然后子集x排除这些值,并取平均值。
range()
x
mean(x[!x %in% range(x)]) # 3.5
xtfmy6hx2#
这是内置在默认的mean函数中的。要去掉顶部和底部的值,请使用mean(x, trim = 1/length(x))。这会去掉顶部和底部的一个观测值。
mean
mean(x, trim = 1/length(x))
db2dz4w83#
解决这个问题的一个可能的方法是:
x <- 1:6 x <- sort(x) # increasing order mean(x[-c(1, length(x)]) # remove first and last value from vector [1] 3.5
或者这样:
mean(x[-c(min(x), max(x))]) [1] 3.5
ie3xauqp4#
以下是您的which解决方案:
which
x <- sample(1:10) x [1] 7 1 10 5 4 3 8 2 9 6 x[-which(x == max(x) | x == min(x))] [1] 7 5 4 3 8 2 9 6 mean(x[-which(x == max(x) | x == min(x))]) [1] 5.5
4条答案
按热度按时间lf5gs5x21#
可以使用
range()
函数返回包含x
的最小值和最大值的向量。然后子集
x
排除这些值,并取平均值。xtfmy6hx2#
这是内置在默认的
mean
函数中的。要去掉顶部和底部的值,请使用mean(x, trim = 1/length(x))
。这会去掉顶部和底部的一个观测值。db2dz4w83#
解决这个问题的一个可能的方法是:
或者这样:
ie3xauqp4#
以下是您的
which
解决方案: