我想創建一個包含“逮捕”一詞及其相關索引號的列名串列。我不想要所有的列,所以我不想將逮捕列子集到一個新的資料框中。我只想查看名稱串列及其索引號,以便可以從原始資料框中洗掉我不想要的名稱。
我嘗試使用以下代碼獲取列名及其關聯的索引號,但他們只給出了一個或另一個。這只給了我他們的名字
colnames(x2009_2014)[grepl("arrest",colnames(x2009_2014))]
[1] "poss_cannabis_tot_arrests" "poss_drug_total_tot_arrests"
[3] "poss_heroin_coke_tot_arrests" "poss_other_drug_tot_arrests"
[5] "poss_synth_narc_tot_arrests" "sale_cannabis_tot_arrests"
[7] "sale_drug_total_tot_arrests" "sale_heroin_coke_tot_arrests"
[9] "sale_other_drug_tot_arrests" "sale_synth_narc_tot_arrests"
[11] "total_drug_tot_arrests"
這只給了我他們的索引號
grep("county", colnames(x2009_2014))
[1] 93 168 243 318 393 468 543 618 693 768 843
但我想要他們的名字和索引號,讓它看起來像這樣
[93] "poss_cannabis_tot_arrests"
[168] "poss_drug_total_tot_arrests"
[243] "poss_heroin_coke_tot_arrests"
[318] "poss_other_drug_tot_arrests"
[393] "poss_synth_narc_tot_arrests"
[468] "sale_cannabis_tot_arrests"
[543] "sale_drug_total_tot_arrests"
[618] "sale_heroin_coke_tot_arrests"
[693] "sale_other_drug_tot_arrests"
[768] "sale_synth_narc_tot_arrests"
[843] "total_drug_tot_arrests"
最后,在這里使用建議,我使用了下面的代碼,但它不起作用。
K=sapply(x2009_2014,function(x)any(grepl("arrest",x)))
which(K)
named integer(0)
在上述鏈接中提供建議的人使用
K=sapply(df,function(x)any(grepl("\\D ",x)))
names (df)[K]
Zo.A Zo.B
Which (k)
Zo.A Zo.B
2 4
我更喜歡我在第三個代碼塊中顯示的串列,但是這個人使用的代碼提供了一個我可以使用的結構。當我嘗試使用它時,它對我不起作用。
uj5u.com熱心網友回復:
哈基作為單線,因為我真的不喜歡<-在函式呼叫中使用,但這應該可行:
setNames(
nm = matches <- grep("arrest", colnames(x2009_2014)),
colnames(x2009_2014)[matches]
)
可重現的例子:
setNames(nm = x <- grep("b|c", letters), letters[x])
# 2 3
# "b" "c"
或者撰寫自己的函式來完成它。在這里,我將它放在一個資料框中,這似乎比命名向量更好:
grep_ind_value = function(pattern, x, ...) {
index = grep(x, pattern, ...)
value = x[index]
data.frame(index, value)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460969.html
標籤:r
