使用带字符串的For-Loop

时间:2017-07-19 15:18:57

标签: r string for-loop

我正在学习R并尝试同时使用它进行统计分析。 在这里,我处在工作的第一部分:我正在编写矩阵并用它们做一些简单的事情,以便稍后使用它们。

punti<-c(0,1,2,4)
t1<-matrix(c(-8,36,-8,-20,51,-17,-17,-17,57,-19,-19,-19,35,-8,-19,-8,0,0,0,0,-20,-20,-20,60,
         -8,-8,-28,44,-8,-8,39,-23,-8,-19,35,-8,57,-8,-41,-8,-8,55,-8,-39,-8,-8,41,-25,
         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),ncol=4,byrow=T)
colnames(t1) <- c("20","1","28","19")
r1<-matrix(c(12,1,19,9,20,20,11,20,20,11,20,28,0,0,0,12,19,19,20,19,28,15,28,19,11,28,1,
         33,20,28,31,1,19,17,28,19,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),ncol=3,byrow=T)
pt1<-rbind(sort(colSums(t1)),sort(punti))
colnames(r1)<-c("Valore","Vincitore","Perdente")
r1<-as.data.frame(r1)

但我有更多矩阵t_r_所以我想运行for循环,如:

for (i in 1:150)
{
  pt[i]<-rbind(sort(colSums(t[i])),sort(punti))
  colnames(r[i])<-c("Valore","Vincitore","Perdente")
  r[i]<-as.data.frame(r[i])
}

这个只是因为r_t_pt_是字符串而无效,但你同时得到了这个想法,我会喜欢复制粘贴这三行并手动编辑[i] 150次。有办法吗?

1 个答案:

答案 0 :(得分:0)

我个人并不建议动态地自动在全球环境中创建大量变量,并建议您在没有这种方法的情况下思考如何实现目标。话虽如此,如果你觉得你真的需要动态创建所有这些变量,你可以从assign函数中受益。

它可以这样工作:

for (i in 1:150)
{
assign(paste0('p',i),rbind(sort(colSums(t[i])),sort(punti))) 
}

assign函数中的第一个参数是变量名称的公式及其创建方式;第二个参数是您希望分配给正在创建的变量的内容。