Как назначить объект для вывода функции?

#r

#r

Вопрос:

Я пытаюсь назначить что-то для вывода Sys.Date(). Например, скажем, я хочу присвоить объекту имя с сегодняшней датой:

format(Sys.Date(), "%b%d") <- mtcars

Я получаю сообщение об ошибке:
недопустимая (НУЛЕВАЯ) левая часть назначения.

Я пытался:
eval(parse(text = format(Sys.Date(), "%b%d"))) <- mtcars

Выдает то же сообщение об ошибке. Чего мне не хватает / есть ли решение?

Комментарии:

1. Почему ты хочешь это сделать? Хранение данных в самом имени переменной обычно является плохой идеей в R. Было бы лучше, если бы вам нужно было динамически генерировать имена, чтобы использовать именованный список и избегать eval() и assign() функций, потому что они создают ненужные накладные расходы.

2. Я в основном устанавливаю временные рамки данных, над которыми я работаю — теперь я называю их вручную, что становится утомительным, чем больше «что, если» я хочу запустить. Я вижу ценность хранения их в списке, меньше беспорядка для одного, но как бы я добавил новый элемент в динамически именуемый слот в списке? У меня есть список x с элементами Sep03 и Sep09 — как бы я добавил динамически именованный элемент Sep11 в x?

3. Вы можете назначить любое строковое значение, например x[["Sep11"]] <- mtcars или функцию, которая возвращает строковое значение x[[format(Sys.Date(), "%b%d")]] <- mtcars . Тогда у вас будут все значения, аккуратно сохраненные в x , и вы сможете получить их с помощью x[["Sep11"]] или x$Sep11 или даже применить функцию к каждому элементу в списке.

4. @MrFlick Назначение для вывода функции в именованном списке сработало, и я вижу, что использую его. Однако мой вопрос касался назначения в глобальной среде, поэтому я оставлю akrun в качестве принятого ответа. Выделите это как отдельный ответ, чтобы другие люди могли его найти? Предполагая, что ТАК ответы будут весить больше комментариев.

Ответ №1:

Мы можем использовать assign

 assign(format(Sys.Date(), "%b%d"), mtcars)

head(Sep11)
#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
  

Комментарии:

1. Спасибо! Сначала я попытался назначить, но просто включил в него format() и получил ту же ошибку.