我需要指定一些變量值在循環需要指定一些變量值在一個循環中的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