Можно ли использовать as.name для назначения переменной и изменения ее подэлементов? - PullRequest
0 голосов
/ 03 мая 2018

Учитывая это:

vec1 = 1:10
varname = "vec1"

Я знаю, что могу сделать это:

eval(parse(text=paste0(varname,"[5] = 20")))

Я хочу найти что-нибудь чище, если это возможно. Я попробовал это:

`<-`(`[`(as.name(varname), 5), 20)

Но я получаю сообщение об ошибке: «объект типа 'symbol' не является поднабором".

Что-то очень похожее работает работает:

`<-`(`[`(vec1, 5), 20)

Почему vec1 трактуется иначе, чем as.name("vec1") при передаче в качестве первого аргумента функции [?

Если я попробую это:

`<-`(`[`(as.name("vec1"), 5), 20)

Я получаю совершенно другую ошибку: «цель назначения расширяется до неязыкового объекта».

Может кто-нибудь объяснить нюансы, связанные с этим? И есть ли более чистые способы делать то, что я хочу, сохраняя при этом vec1 как простую, автономную переменную верхнего уровня? Реальный сценарий в этом случае более сложный, и у меня уже есть обходной путь; Я прошу этого больше, чтобы понять основы того, что возможно, а что невозможно с R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...