使用带字符串的For循环
我正在学习R,同时尝试将其用于统计分析。 在这里,我处于工作的第一部分:我正在编写矩阵,并用它们做一些简单的事情,以便以后使用这些矩阵使用带字符串的For循环,r,string,for-loop,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,5
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)
这一行行不通,因为
r\u
、t\u
和pt\u
都是字符串,但您知道,我不想复制粘贴这三行并手动编辑[I]
150次。有办法吗?就我个人而言,我不建议在全球环境中动态地、自动地创建大量变量,而是建议您考虑如何在没有这种方法的情况下实现目标。话虽如此,如果您觉得确实需要动态创建所有这些变量,则可以使用assign
函数
它可以这样工作:
for (i in 1:150)
{
assign(paste0('p',i),rbind(sort(colSums(t[i])),sort(punti)))
}
assign
函数中的第一个参数是变量名的公式及其创建方式;第二个参数是您希望分配给正在创建的变量的参数 欢迎来到StackOverflow!如果可能的话,请记住让你的例子重现。也许您可以dput
数据对象的head()
。作为@Hack-R评论的后续内容:请阅读谢谢。我将补充所需内容。我试图尽可能地保持它最简洁,因为这不是问题所在,但你是对的。你可以在最末尾设置列名,它不需要在循环中执行150次,我将有r1
,r2
,r3
,…,r150
。我想我需要在for循环中使用colnames
,我稍微修改了你的建议,因为colSums(t[I])
不起作用(t[I]中的错误:“closure”类型的对象不可子集)
。我尝试了for(1:150中的I){assign(paste0('p',I)),rbind(sort(colSums(paste0('t',I))),sort(punti))}
但它也不起作用。它报告colSums中的错误(paste0(“t”,i)):“x”必须至少是一个二维数组
(翻译自意大利语,可能不是完美的翻译)
for (i in 1:150)
{
assign(paste0('p',i),rbind(sort(colSums(t[i])),sort(punti)))
}