在R中找到两个中间值?

在R中找到两个中间值?,r,R,编辑:输出为:[1]49 65。只允许使用索引。代码不能硬编码。 有谁能提供R中的代码,用于在包含10个元素的向量中查找两个中间值? 该代码需要适用于任何向量大小。所以它不能硬编码 元素为59,46,76,60,49,65,82,68,99,52 x <- c(59,46,76,60,49,65,82,68,99,52) if(length(x)%%2 == 0) { x[c(length(x)/2,(length(x)/2+1))] } else{ x[ceilin

编辑:输出为:[1]49 65。只允许使用索引。代码不能硬编码。 有谁能提供R中的代码,用于在包含10个元素的向量中查找两个中间值? 该代码需要适用于任何向量大小。所以它不能硬编码
元素为59,46,76,60,49,65,82,68,99,52

x <- c(59,46,76,60,49,65,82,68,99,52) 
 
 if(length(x)%%2 == 0) {
   x[c(length(x)/2,(length(x)/2+1))]
 } else{
   x[ceiling(length(x)/2)]
 }
[1] 49 65
array <- c(59,46,76,60,49,65,82,68,99,52)
如果我们想要第五和第六高的数字,我们可以选择

sort(array)[5:6]
# 60 65
如果您想知道中间两个元素位于原始数组的哪个位置,可以这样做

which(array %in% sort(array)[5:6])
# 4 6
您可以通过执行以下操作,以编程方式为任意偶数长度的数组展开上述内容

n <- length(array)
x <- n/2
y <- x  + 1 
像这样

x <- c(59,46,76,60,49,65,82,68,99,52)

c(x[length(x)/2],x[length(x)/2 + 1]) 

x您想要排序的数字向量中的中间元素,还是仅仅是中间索引?如果输入向量的元素数为奇数,您期望的输出是什么?您可以使用
median
函数,但它会对偶数长度列表的中间两个值求平均值。@acvill它不能排序。必须按原样排序。输出为[1]4965。只允许使用索引。不能硬编码,因此如果以后添加更多元素,代码必须在不改变代码的情况下仍能工作。
x <- c(59,46,76,60,49,65,82,68,99,52)

c(x[length(x)/2],x[length(x)/2 + 1])