Итак, я знаю, что если у вас есть:
m = matrix(1:9, 3,3)
z = as.matrix(expand.grid(1:3, 1:3))
И вы делаете
m[z]
# you get back 1 2 3 4 5 6 7 8 9
Но если вы делаете
m[] = m[z]
# You get back a matrix..
Я немного не понимаю, что делает этот оператор []
? почему что-то вроде m[][z]
или m[z][]
не возвращает матрицу? и как мне заставить его вернуть матрицу без присвоения ее переменной m[]
Благодарность!
1 ответ
Ключевым моментом здесь является то, что когда аргумент для «[]» (который на самом деле является функцией) представляет собой матрицу из двух столбцов, как вы указали, результатом будет вектор, в котором первый столбец указывает строку, а второй столбец указывает столбец в оперированная матрица. Это «особенность» (и я мог бы добавить, что она очень удобная) языка.
Аргументы могут содержать или не содержать все возможные комбинации строки и столбца, поэтому результат непредсказуемо будет чем-то, что разумно было бы матрицей тех же измерений. Форма: m[] <- m[ z[1:4, ] ]
выдаст результат, но также и предупреждение. Вы должны посмотреть на результат, а затем попытаться понять, что происходит.
Похожие вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.
m[z]
? Где непоследовательность? Помните, что в Rmatrix
- это простоvector
с размерами ...matrix(vector, nrow, ncol)
, я нашел этот полезный оператор. Я просто не смог найти по нему никакой документации?Extract
или?"["
. Его следует изучить внимательно , если вы хотите избежать других распространенных ошибок, я бы предложил по крайней мере 5 полных чтений.