OK. Я отправлю этот код, но только потому, что меня попросили:
> eval(parse(text=paste0(master[2], "[2]<- 900")))
> ed
[1] 1 900 3 4 5 6 7 8 9 10
Обычно считается неправильной практикой использования такого метода. Вам нужно построить выражение «ed[2] < 100
». Используя paste0
, вы можете оценить master [2] как 'ed'
, который затем объединяется с остальными символами, прежде чем перейти к parse
для преобразования в объект языка. Это будет больше соответствовать тому, что считается лучшей практикой:
master<-c("bob","ed","frank")
d<-seq(1:10)
mlist <- setNames(lapply(seq_along(master), function(x) {d}), master)
Таким образом изменяя второе значение второго элемента с <-
:
> mlist[[2]][2] <- 900
> mlist[['ed']]
[1] 1 900 3 4 5 6 7 8 9 10
Используйте 'получить (мастер [2])' Использование Eval, как правило, рассматривается как доказательство отсутствия. но если вы действительно этого хотите, попробуйте: 'eval (as.name (maste г [2])) '. Существует разделение между объектами данных и языковыми объектами. Поэтому 'get' и' as.name' можно рассматривать как «продвижение» статуса объекта символа на объект языка. –
@Bonded get (master [2]) [2] <- 900 возвращает ERROR – user3022875
Не удалось найти желаемый результат. Если вы хотите выполнить назначение, то почему бы не использовать .... 'assign'? –