я извлек индексов массива некоторых элементов, которые я хочу смотреть на следующее:Лучший способ подачи, который (, arr.ind = T) обратно в матрицу в R?
mat = matrix(0,10,10)
arrInd = which(mat ==0,arr.ind = T)
Тогда я еще несколько операций на этой матрице и в конечном итоге с вектором или строк rowInd
и вектор столбцов colInd
. Я хочу, чтобы эти индексы вставляли значения в другую матрицу, например mat2. Но я не могу понять, как это сделать, не зацикливая и не выполняя модульные вычисления арифметики. Я понимаю, что я мог бы взять что-то вроде
mat2[rowInd*(colInd-1)+rowInd]
, чтобы преобразовать обратно в 1-мерную индексацию. Но так как R, как правило, построил функции, чтобы делать такие вещи, мне было интересно, есть ли более сжатый способ сделать это? Казалось бы, естественно, что такая удобная функция обработки данных, как which(,arr.ind=T)
, имела бы удобный обратный.
EDIT: Я пробовал использовать mat2[rowInd,colInd]
, но это не сработало.
Бест,
Пол
Я полагаю, что основное представление в памяти матрицы не является 2-мерным? Строки и столбцы - это только атрибуты матрицы? –
@zheyuan Li: спасибо за ваш ответ. Я должен был заметить, что после манипуляций мои индексы строк и индексы столбцов были сохранены как отдельные векторы. Но, благодаря вашему ответу, теперь кажется очевидным, что мне нужен был 'mat2 [cbind (rowInd, colInd)]'. Благодаря! – Paul