gpt4 book ai didi

r - 在 R 中通过数组索引向量

转载 作者:行者123 更新时间:2023-12-05 01:30:07 29 4
gpt4 key购买 nike

在 MATLAB 和 numpy 中,您可以通过索引数组对向量进行索引,并获得相同形状的结果,例如

A = [1 1 2 3 5 8 13];
B = [1 2; 2 6; 7 1; 4 4];
A(B)

## ans =
##
## 1 1
## 1 8
## 13 1
## 3 3

import numpy as np
a = np.array([1, 1, 2, 3, 5, 8, 13])
b = np.reshape(np.array([0, 1, 1, 5, 6, 0, 3, 3]), (4, 2))
a[b]

## array([[ 1, 1],
## [ 1, 8],
## [13, 1],
## [ 3, 3]])

但是,在 R 中,通过索引数组对向量进行索引会返回一个向量:

a <- c(1, 1, 2, 3, 5, 8, 13)
b <- matrix(c(1, 2, 7, 4, 2, 6, 1, 4), nrow = 4)
a[b]

## [1] 1 1 13 3 1 8 1 3

R 中是否有一种惯用的方法来执行保留数组形状的矢量化查找?

最佳答案

您无法在 R 中单独通过子集指定维度(据我所知)。这是一个解决方法:

`dim<-`(a[b], dim(b))

产品:

     [,1] [,2]
[1,] 1 1
[2,] 1 8
[3,] 13 1
[4,] 3 3

dim<-(...)只是允许我们使用尺寸设置功能dim<-因为它的结果而不是通常情况下的副作用。

您还可以执行以下操作:

t(apply(b, 1, function(idx) a[idx]))

但这会很慢。

关于r - 在 R 中通过数组索引向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27324455/

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