Каков самый короткий способ создать пустой именованный числовой вектор в R?

Я могу создать пустой вектор с помощью v <- numeric(0), но вектор не имеет имени, тогда просто тип num. Когда я оцениваю names(v) <- character(0), у меня есть пустой именованный числовой вектор:

> v <- numeric(0)
> names(v) <- character(0)
> str(v)
 Named num(0) 
 - attr(*, "names")= chr(0) 
> v["test"] <- 1
> str(v)
 Named num 1
 - attr(*, "names")= chr "test"

Есть ли более простой способ создать пустой именованный числовой вектор? Вроде конструктора типа named(0) нет, или я пропустил?


person U. Windl    schedule 24.10.2017    source источник
comment
На самом деле я нашел ответ до того, как задать вопрос, но я все равно решил это сделать и ответить на него для вашего удовольствия...   -  person U. Windl    schedule 24.10.2017
comment
Почему вы хотите создать пустой вектор? R на самом деле не работает так, когда дело доходит до итерации   -  person Sotos    schedule 24.10.2017
comment
@Sotos: Если вы перебираете данные, условно добавляя к вектору, вы хотите, чтобы в конце цикла был хотя бы пустой вектор (если ни одно условие не было истинным).   -  person U. Windl    schedule 24.10.2017
comment
@U.Windl Зацикливание данных, условное добавление к вектору - это то, чего вам не следует делать. У меня никогда не было задачи, которую нельзя было бы решить более эффективно и изящно.   -  person Roland    schedule 24.10.2017
comment
@ Роланд, ты можешь быть умнее меня, но если кто-то о чем-то просит, не сомневайся в необходимости (если только я не спросил бы, есть ли способ избежать пустого вектора). То, что вы делаете, является утверждением (истинным или ложным), но не ответом.   -  person U. Windl    schedule 24.10.2017
comment
@U.Windl Я регулярно задаю вопросы людям, которые задают здесь вопросы. Обычно я правильно делаю это. Причина не в том, чтобы быть умнее, а в том, чтобы быть более опытным в R.   -  person Roland    schedule 24.10.2017
comment
@Roland: ИМХО, большинство проблем в R возникают из-за того, что разработчики думали, что пользователи не будут использовать то или иное. Может быть, выбрать книгу по математике, где появляются пустые множества, и убедить автора, что пустые множества не нужны. Это также будет интересно для рекурсивного определения списка...   -  person U. Windl    schedule 24.10.2017


Ответы (1)


Ответы, которые можно получить из Создайте числовой вектор с именами в одном утверждение? являются:

  1. Использование structure().
  2. Использование setNames().

Например:

> v <- structure(numeric(0), names=character(0))
> str(v)
 Named num(0) 
 - attr(*, "names")= chr(0) 


> v <-setNames(numeric(0), character(0))
> str(v)
 Named num(0) 
 - attr(*, "names")= chr(0) 
person U. Windl    schedule 24.10.2017
comment
Это не кажется полезным. Зачем пустому вектору нужен атрибут имен? Вы всегда можете добавить имена на лету: x <- numeric(); x["a"] <- 1. Но если вы хотите поиграть в гольф, вот вариант: c(a=.1)[-1]. - person Roland; 24.10.2017
comment
@Roland: Прежде чем давать отрицательные кредиты с таким комментарием, добавьте такой комментарий к вопросу, а не к ответу. Несмотря на это, ваш ответ помогает, но я его не понимаю. Если вы намерены учить, пожалуйста, добавьте немного информации, позволяющей мне понять ваше решение. Хорошо, кажется, я понял: вы создаете пару (имя, значение) в векторе и сразу же отбрасываете этот элемент (первый). Сложно, но я думаю, что мой ответ более прямой, даже если он длиннее. - person U. Windl; 24.10.2017
comment
Вы действительно спорите о том, где я оставлю комментарий? Я не дал отрицательных кредитов (пока) ни на вопрос, ни на ответ. Тем не менее, голосование за посты любым удобным для них способом является прерогативой любого пользователя. - person Roland; 24.10.2017