Почему ncol и nrow дают только NULL, когда у меня есть данные?

Я новичок в R, поэтому, скорее всего, это глупый вопрос.
Каждый раз, когда я создаю искусственные данные и иногда использую импортированные наборы данных, R говорит мне, что у моих переменных нет строк или столбцов.
Я могу запускать регрессии, но я не могу основывать команды на количество строк/столбцов, которые имеют мои переменные.
Например, скажем, у меня есть переменная x1, которая представляет собой столбец-вектор из 100 наблюдений.

ncol(x1)

NULL

nrow(x1)

NULL

Однако, если я это сделаю:

x=t(x)
x=t(x)

и снова введите ncol(x), nrow(x), затем я получу фактическое количество столбцов, строк, которые имеет объект.

Почему это происходит и как я могу исправить это, не используя t()?

Ответы

Ответ 1

Для NCOL(x) нужно использовать NCOL(x) и NROW(x). Переставляя x (t(x)), вы превращаете его в матрицу, поэтому ncol(x) и nrow(x) работают тогда.

Он находится в файле справки:

? ncol nrow и ncol возвращают количество строк или столбцов, присутствующих в x. NCOL и NROW выполняют ту же обработку вектора, что и матрица с 1 столбцом.

> x <- 1:100
> is.matrix(x)
[1] FALSE
> NCOL(x)
[1] 1
> y <- t(x)
> is.matrix(y)
[1] TRUE
> ncol(y)
[1] 100