我需要指定一些变量值在循环需要指定一些变量值在一个循环中的R
如:
abc_1<-
abc_2<-
abc_3<-
.....
类似:
for(i in 1:20)
{
paste("abc",i,sep="_")<-some calculated value
}
我曾尝试如上所述使用粘贴,但它不起作用。 这怎么能做到。谢谢
我需要指定一些变量值在循环需要指定一些变量值在一个循环中的R
如:
abc_1<-
abc_2<-
abc_3<-
.....
类似:
for(i in 1:20)
{
paste("abc",i,sep="_")<-some calculated value
}
我曾尝试如上所述使用粘贴,但它不起作用。 这怎么能做到。谢谢
assign()
和paste0()
应该帮助你。
例如:
object_names <- paste0("abc",1:20)
for (i in 1:20){
assign(object_names[i],runif(40))
}
assign()
取入object_names字符串和在所述第二参数给每个名称分配的功能。当您将一个数字向量放入paste0()
的内部时,它将为数值向量中的每个值返回一个连续值的字符向量。
编辑:
正如下面格雷戈尔说,这是更好的做一个列表,因为:
lapply()
非常擅长这一点。例如:
N <- 20
# create random numbers in list
abcs <- lapply(1:N,function(i) runif(40))
# multiply each vector in list by 10
abc.mult <- lapply(1:length(abcs), function(i) abcs[[i]] * 10)
但是,使用列表,而不是帮助更多... – Gregor 2015-02-12 06:48:28
但它并不意味着答案可能没有用...所以这里是一个投票了...... – A5C1D2H2I1M1N2O1R2T1 2015-02-12 06:53:34
你的100%权利,但问题要求创建对象,所以我给了他一个答案。 'stuff < - lapply(1:length(N),runif(10))'会更快。 – 2015-02-12 06:53:52
看看'assign'。 – A5C1D2H2I1M1N2O1R2T1 2015-02-12 06:15:07
或在将值放入列表中后使用'list2env'。 – akrun 2015-02-12 06:16:19
不要这样命名你的变量。将值放在列表或向量中会更好。 – MrFlick 2015-02-12 06:29:00