Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
R循环升序变量名_R_Loops_Variables_Names - Fatal编程技术网

R循环升序变量名

R循环升序变量名,r,loops,variables,names,R,Loops,Variables,Names,我试图在R中的变量名上创建一个循环。它应该做两个变量之和的平方根。到目前为止,我有: 变量名是x1、y1、x2、y2、。。。x30,y30(一体式矩阵,矩阵$x1,矩阵$x2) x1以下是一个示例矩阵: dat <- matrix(1:300, ncol = 60) colnames(dat) <- paste0(rep(c("x", "y"), 30), rep(1:30, each = 2)) dat好的,这种格式有点笨拙,但仍然可以管理。我们查找名称中包含当前“i”的列名,并

我试图在R中的变量名上创建一个循环。它应该做两个变量之和的平方根。到目前为止,我有:

变量名是x1、y1、x2、y2、。。。x30,y30(一体式矩阵,矩阵$x1,矩阵$x2)


x1以下是一个示例矩阵:

dat <- matrix(1:300, ncol = 60)
colnames(dat) <- paste0(rep(c("x", "y"), 30), rep(1:30, each = 2))

dat好的,这种格式有点笨拙,但仍然可以管理。我们查找名称中包含当前“i”的列名,并计算其总和的sqrt

result <- vector()
for (i in 1:3){
  result[i] <- sqrt(sum(matrix[,which(grepl(i,colnames(matrix)))]))
}

我不确定最初的问题是什么样子的,但是您的代码现在看起来很好,只是需要使用
paste()
来构造变量名,并使用
get()
来获取它们

 for(i in 1:30){
    result[[i]]  <- sqrt(get(paste('x',i,sep='')) + get(paste('y',i,sep='')))
 }
for(i在1:30){

结果[[i]]你试图做的很困难,因为你犯了一个错误,创建了60个独立的变量,而不是将它们放在一个单一的数据结构中,比如列表或矩阵。例如,一个两列矩阵,或一个长度为2的向量列表。是的,我在描述中更改了它!为不明确之处感到抱歉!这仍然是公平的对于你要做的事情来说,你的数据结构很笨拙。不过,至少可以通过将列名粘贴在一起来进行子集设置。例如,类似于
matrix[,paste0(“x”,i)]
。你能提供一个矩阵的例子吗?给你,只是简单的变量,但它会上升到30
result <- vector()
for (i in 1:3){
  result[i] <- sqrt(sum(matrix[,which(grepl(i,colnames(matrix)))]))
}
> result
[1] 7.348469 7.615773 7.549834
 for(i in 1:30){
    result[[i]]  <- sqrt(get(paste('x',i,sep='')) + get(paste('y',i,sep='')))
 }