我將如何按字母順序對向量進行排序,然后根據新的字母順序列印前 10 個名稱和后 10 個名稱?
我知道使用 sort(names) 按字母順序獲取向量,并且我知道使用 tail(names,10) 和 head(names,10) 來獲取名字和姓氏,但是如何組合這些函式?
謝謝你的幫助
uj5u.com熱心網友回復:
使用一個小的自定義函式,您可以執行以下操作:
ht_sort <- function(x, n) {
x <- sort(x)
c(head(x, n), tail(x, n))
}
names <- rownames(mtcars)
ht_sort(names, 10)
#> [1] "AMC Javelin" "Cadillac Fleetwood" "Camaro Z28"
#> [4] "Chrysler Imperial" "Datsun 710" "Dodge Challenger"
#> [7] "Duster 360" "Ferrari Dino" "Fiat 128"
#> [10] "Fiat X1-9" "Merc 280C" "Merc 450SE"
#> [13] "Merc 450SL" "Merc 450SLC" "Pontiac Firebird"
#> [16] "Porsche 914-2" "Toyota Corolla" "Toyota Corona"
#> [19] "Valiant" "Volvo 142E"
uj5u.com熱心網友回復:
一口氣,您可以這樣做:
sort(x)[c(1:10, (length(x)-10):length(x))]
或與sequence:
sort(x)[sequence(c(10, 10), c(1, length(x) - 10 1))]
uj5u.com熱心網友回復:
根據@stefan 的回答,如果您還不熟悉函式,您可能會發現這很有用。
假設你有一個 vector vec。您可以先排序,然后將向量的headandtail與c. 請注意,10 告訴head并tail顯示 10 個元素而不是默認值。
vec <- rownames(mtcars)
c(head(sort(vec),10), tail(sort(vec),10))
uj5u.com熱心網友回復:
您只需創建一個函式 -
headtail <- function(x) {
y<-sort(x)
print(head(y))
print (tail(y))
}
uj5u.com熱心網友回復:
使用headTail來自psych
library(psych)
c(headTail(sort(x), 5, ellipsis = FALSE))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522681.html
標籤:r排序尾巴头
