Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带字符串的For循环_R_String_For Loop - Fatal编程技术网

使用带字符串的For循环

使用带字符串的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

我正在学习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)

这一行行不通,因为
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))) 
}