分配给动态创建的矢量

时间:2014-12-01 23:38:39

标签: r

如何分配动态创建的矢量?

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 个答案:

答案 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