Можно ли в R создать единичные именованные векторы? - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь назвать вектор только одним столбцом, то есть, скажем, у меня есть

vector<-c(1,2,3,4)

Я хочу назвать один столбец (1,2,3,4) как "a", т.е. я хочу что-то вроде:

a
1
2
3
4 

Если я попытаюсь

colnames(vector)<- c("a")

Это дает мне вывод:

Error in `colnames<-`(`*tmp*`, value = "a") : 
  attempt to set 'colnames' on an object with less than two dimensions

Если я попытаюсь

names(vector)<- c("a")

Вектор назван

    a <NA> <NA> <NA> 
   1    2    3    4 

У меня вопрос: разрешен ли такой вектор в R? В частности, разрешено ли это без использования матрицы или data.frame или любого другого такого класса, который может хранить более одного столбца? Если да, то как мне его создать?

1 Ответ

2 голосов
/ 31 марта 2019

Если вам нужно что-то с именем столбца, которое будет печататься в формате столбца, используйте один столбец matrix или data.frame:

vector <- matrix( c(1,2,3,4), dimnames=list(NULL, "a") )

vector <- data.frame( a=c(1,2,3,4) )

Существует тип объекта 1d, но довольно запутанныйэто требует, чтобы присвоение единственного значения измерения было его длиной.См .:

  ?dim

dim(vector)=1L
Error in dim(vector) = 1L : 
  dims [product 1] do not match the length of object [4]

> dim(vector)=4L
> vector
[1] 1 2 3 4
> str(vector)
 num [1:4(1d)] 1 2 3 4

На самом деле страница справки по функции dim, по-видимому, не документирует требование, что произведение результата dim будет равно длине.Я предполагаю, что ваше домашнее задание было предназначено для того, чтобы вы прочитали справочную страницу dim, а затем обнаружили (как я только что сделал), что объект one-d возможен, но немного сбивает с толку.

Как оказалосьразличие между векторами строк и столбцов не применяется:

> vector %*% matrix(1:16,4)
     [,1] [,2] [,3] [,4]
[1,]   30   70  110  150
> t(vector) %*% matrix(1:16,4)
     [,1] [,2] [,3] [,4]
[1,]   30   70  110  150
> t(vector) %*% matrix(1:16,4) %*% vector
     [,1]
[1,] 1100
> vector %*% matrix(1:16,4) %*% vector
     [,1]
[1,] 1100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...