获取向量中唯一值的索引

Get indexes of unique values in a vector

我有一个这样的向量。

filenames <- c("kisyu2_mst.csv", "kisyu3_mst.csv", "kisyu2_mst.csv",
               "kisyu3_mst.csv", "kisyu3_mst.csv")

我需要从文件名向量中获取每个唯一的索引 value.output 看起来像这样

for "kisyu2_mst.csv" 索引向量 c(1,3)
对于 "kisyu3_mst.csv" 索引向量 c(2,4,5)

最后,我需要将它插入到这样的列表中:

final <- list("kisyu2_mst.csv" = c(1,3), "kisyu3_mst.csv"=c(2,4,5))

如何从向量中获取唯一值的索引?

我们可以使用split

split(seq_along(filenames), filenames)

#$kisyu2_mst.csv
#[1] 1 3

#$kisyu3_mst.csv
#[1] 2 4 5

我们可以试试 which:

sapply(unique(filenames), function(i) which(filenames %in% i))
# $kisyu2_mst.csv
# [1] 1 3
# 
# $kisyu3_mst.csv
# [1] 2 4 5

我们可以使用tapply

tapply(seq_along(filenames), filenames, FUN  = I)
#$kisyu2_mst.csv
#[1] 1 3

#$kisyu3_mst.csv
#[1] 2 4 5