如何分配动态创建的矢量?
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
答案 0 :(得分:0)
行。我发布此代码但仅仅是因为我被要求:
> eval(parse(text=paste0( master[2], "[2]<- 900" ) ) )
> ed
[1] 1 900 3 4 5 6 7 8 9 10
使用这种方法通常被认为是不好的做法。你需要构建表达式&#34; 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