Каковы значения по умолчанию для nrow и ncol в матричной функции R? - PullRequest
2 голосов
/ 18 сентября 2019

Каковы значения по умолчанию для аргументов nrow и ncol в функции matrix в R?

В словах заказа: Написав

matrix(c(1,2,3,4,5,6), ncol=2)

Я могузаставить функцию matrix автоматически вычислять, сколько строк будет иметь результирующая матрица, и результат будет

     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

Однако, если я хочу, чтобы ncol был позиционным аргументом в этом вызове функции, и япросто удалите ncol=, то есть

matrix(c(1,2,3,4,5,6), 2)

"2" закончится значением nrow, а не значением ncol, и вместо этого я получуматрица

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Я могу исправить это, задав функции значение nrow, чтобы 2 переместился в правильное положение, например:

matrix(c(1,2,3,4,5,6), 3, 2)

и я снова получу желаемую матрицу.Я мог бы также использовать этот метод предоставления значения для nrow, если бы я использовал ключевое слово аргумента для ncol, но в то же время хотел быть понятным и предоставить также аргумент nrow:

matrix(c(1,2,3,4,5,6), nrow=3, ncol=2)

Но теперь matrix не рассчитывает количество строк для меня, но я должен вычислить это сам.Какое значение я должен написать вместо 3, если я хочу сказать matrix для вычисления количества строк?Я пытался заменить 3 на NULL, None (обычно работает в подобных случаях в Python) и -1, но все они дают мне ошибки (а 0 и 1 дают мне матрицыс 0 строками и 1 рядом соответственно).

1 Ответ

1 голос
/ 18 сентября 2019

Мы можем поместить , перед

 matrix(c(1,2,3,4,5,6), ,2)

Здесь , размещается на основе порядка аргументов в функции.Если мы проверяем ?matrix, используется матрица

(данные = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

Обратите внимание, что большинство аргументов имеют значения по умолчанию.Всегда лучше передавать аргумент функции с именами, но если мы хотим пропустить, можно использовать правильное число , (также зависит от поведения функции).Здесь мы также можем установить dimnames после пропуска аргумента byrow с помощью ,

matrix(c(1,2,3,4,5,6), ,2, ,list(NULL, c('a', 'b')))
#     a b
#[1,] 1 4
#[2,] 2 5
#[3,] 3 6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...