Присвоение динамически созданному вектору
Как мне назначить динамически создаваемый вектор?
master<-c("bob","ed","frank")
d<-seq(1:10)
for (i in 1:length(master)){
assign(master[i], d )
}
eval(parse(text=master[2]))[2] # I can access the data
# but how can I assign to it THIS RETURNS AN ERROR #######################
eval(parse(text=master[2]))[2]<- 900
1 ответ
Решение
ХОРОШО. Я выложу этот код, но только потому, что меня попросили:
> eval(parse(text=paste0( master[2], "[2]<- 900" ) ) )
> ed
[1] 1 900 3 4 5 6 7 8 9 10
Обычно считается плохой практикой использовать такой метод. Вам нужно построить выражение ed[2] < 100
, С помощью paste0
позволяет оценить мастер [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