gpt4 book ai didi

r - 我想获取数据框中所有行的行号,其中列中的元素包含向量中的元素

转载 作者:行者123 更新时间:2023-12-02 06:50:11 25 4
gpt4 key购买 nike

我有一个看起来像这样的字符向量

Categories = sample(make.unique(rep(letters, length.out = 5), sep=''))
Categories
[1] "d-" "e-" "c-" "a-" "b-"

我有一个数据框 df,它看起来像:

df = data.frame(name = c(1:10), cat = paste(c(letters[1:10]), "-1", sep = ""))
df
name cat
1 1 a-1
2 2 b-1
3 3 c-1
4 4 d-1
5 5 e-1
6 6 f-1
7 7 g-1
8 8 h-1
9 9 i-1
10 10 j-1

我想按照类别元素在 df 中“cat”列中包含的顺序获取 df 中的行号。所以,我想得到

dfRowNumbers
[1] 4,5,3,1,2

我怎样才能得到它?

最佳答案

最直接的方法是,您可以使用 charmatch

charmatch(vec, df$cat)
[1] 4 5 3 1 2

或使用 grepsapply 返回命名向量。

sapply(Categories, grep, df$cat, fixed=TRUE)
d- e- c- a- b-
4 5 3 1 2

对于一点语义糖,使用 Vectorize 构建您自己的函数:

vecGrep <- Vectorize(grep, vectorize.args="pattern")

然后用它返回一个命名向量

vecGrep(Categories, df$cat, fixed=TRUE)
d- e- c- a- b-
4 5 3 1 2

数据

vec <- c("d-", "e-", "c-", "a-", "b-")
df = data.frame(name = c(1:10), cat = paste(c(letters[1:10]), "-1", sep = ""))

关于r - 我想获取数据框中所有行的行号,其中列中的元素包含向量中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com