R循环升序变量名
我试图在R中的变量名上创建一个循环。它应该做两个变量之和的平方根。到目前为止,我有: 变量名是x1、y1、x2、y2、。。。x30,y30(一体式矩阵,矩阵$x1,矩阵$x2)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”的列名,并
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='')))
}