相关疑难解决方法(0)

是否有R函数用于查找向量中元素的索引?

在R中,我有一个元素x和一个向量v.我想找到一个元素的第一个索引v,它等于x.我知道这样做的一种方法是:which(x == v)[[1]],但这似乎效率过低.有更直接的方法吗?

对于奖励积分,是否有一个功能,如果x是一个矢量?也就是说,它应该返回一个索引向量,指示xin 的每个元素的位置v.

indexing r vectorization match

290
推荐指数
4
解决办法
48万
查看次数

获取另一个向量的值的索引?

我猜这是重复的,但我找不到,所以这里...

我想首先返回第二个索引:

first = c( "a" , "c" , "b" )
second = c( "c" , "b" , "a" )
result = c( 2 , 3 , 1 )
Run Code Online (Sandbox Code Playgroud)

我保证第一个和第二个具有唯一值,并且两者之间具有相同的值.

r

21
推荐指数
1
解决办法
2万
查看次数

有效匹配另一个向量中一个向量的所有值

我正在寻找一种有效的x方法来匹配向量中向量的所有值,y而不仅仅是第一个位置,如match(). 我本质上追求的是默认行为pmatch(),但没有部分匹配:

x <- c(3L, 1L, 2L, 3L, 3L, 2L)
y <- c(3L, 3L, 3L, 3L, 1L, 3L)
Run Code Online (Sandbox Code Playgroud)

预期输出:

pmatch(x, y)  
[1]  1  5 NA  2  3 NA
Run Code Online (Sandbox Code Playgroud)

一种方法是使用ave(),但是随着组数量的增加,这会变得很慢并且内存效率很低:

ave(x, x, FUN = \(v) which(y == v[1])[1:length(v)])
[1]  1  5 NA  2  3 NA
Run Code Online (Sandbox Code Playgroud)

任何人都可以推荐一种有效的方法来在优选(但不是强制)的基础 R 中实现这一目标吗?

用于基准测试的更大数据集:

set.seed(5)
x <- sample(5e3, 1e5, replace = TRUE)
y <- sample(x, replace = TRUE)
Run Code Online (Sandbox Code Playgroud)

optimization performance search r matching

16
推荐指数
3
解决办法
1462
查看次数