在R Vector中找到16个最大值

时间:2016-11-28 21:54:15

标签: r vector

鉴于下面的R代码,我想知道如何创建两列,使得当“x”在.4和之间有界限时,LR的16个最大值及其对应的xs。 8 显示? ( x 的列& 相应LR的列)?

n=100
h=60
x=seq(0,1,by=0.02)
LR <- dbeta(x,h+1,n-h+1)/max(dbeta(x,h+1,n-h+1))

我正在尝试以下操作,但无法创建两列:

head(sort(LR[which(x<=.8 & x>=.4)], decreasing=TRUE), 16)

2 个答案:

答案 0 :(得分:5)

您可以使用sort在您的条件下对矢量LR的子集进行排序:

sort(LR[x <= .8 & x >= .4],decreasing = TRUE)[1:16]

答案 1 :(得分:1)

以下是使用dplyr的方法:

library(dplyr)
df <- data.frame(x, LR)
df1 <- df %>%
  filter((x >= 0.4) & (x <= 0.8)) %>% 
  top_n(16, LR)

# to save the data
write.csv(df1, "abc.csv", row.names=FALSE)