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
通过'连接数据;rbind';作为R中的循环_R_Loops_For Loop - Fatal编程技术网

通过'连接数据;rbind';作为R中的循环

通过'连接数据;rbind';作为R中的循环,r,loops,for-loop,R,Loops,For Loop,我有两个同样长的数据集-'vpXmin'和'vpXmax'由'vp'创建 > head(vpXmin) vp [1,] 253641 2621722 [2,] 253641 2622722 [3,] 253641 2623722 [4,] 253641 2624722 [5,] 253641 2625722 [6,] 253641 2626722 > head(vpXmax) vp [1,] 268641 2621

我有两个同样长的数据集-'vpXmin'和'vpXmax'由'vp'创建

> head(vpXmin)
                 vp
[1,] 253641 2621722
[2,] 253641 2622722
[3,] 253641 2623722
[4,] 253641 2624722
[5,] 253641 2625722
[6,] 253641 2626722

> head(vpXmax)
                 vp
[1,] 268641 2621722
[2,] 268641 2622722
[3,] 268641 2623722
[4,] 268641 2624722
[5,] 268641 2625722
[6,] 268641 2626722
我想使用“rbind”连接这些数据集中的每一行,并想创建单独的矩阵;e、 g

l1<-rbind(vpXmax[1,],vpXmin[1,])
l2<-rbind(vpXmax[2,],vpXmin[2,])
 ... ...

知道为什么吗?另外,请给我一些好的参考资料来学习使用R的不同类型的循环,如果有的话。提前感谢。

正如@ToNoy所指出的,您想要的输出类型并不明显。最简单的方法是创建一个列表,其中每个元素都是两个原始数据帧的每一行的结果

A <- data.frame("a" = runif(100, -1, 0), "b" = runif(100, 0, 1))                                                                                                                     
Z <- data.frame("a" = runif(100, -2, -1), "b" = runif(100, 1, 2))                                                                                                                    

output <- vector("list", nrow(A))                                                                                                                                                    
for (i in 1:nrow(A)) {                                                                                                                                                               
    output[[i]] <- rbind(A[i, ], Z[i, ])                                                                                                                                             
}                                                                                             
A可能类似于:

vpXmax <- matrix(1:10,ncol=2)
vpXmin <- matrix(11:20,ncol=2)

l <- lapply(1:nrow(vpXmin),function(i) rbind(vpXmax[i,],vpXmin[i,]) )
虽然这可能并不理想,但您的初始循环有一个主要错误。
您没有分配输出,因此需要使用
assign
您可以发布
dput(head(vpXmax))
dput(head(vpXmin))的输出吗。另外,您是否希望每行有一个单独的矩阵?请发布一个你想要的输出样本以避免模棱两可。当你说“我失败了…”时,请准确描述发生了什么!你收到错误消息了吗?我注意到的第一件事是,您没有将
rbind
的结果赋给变量:看起来您的循环将完成所有计算,但会丢弃结果。for循环中的错误是什么?您需要在每个循环中进行分配,例如,
l[[i]]控制台中的“for循环”没有错误!!谢谢,但我的最终目标是将这些对象中的每一个都制作成空间线。所以我用“lappy”来表示:L1
vpXmax <- matrix(1:10,ncol=2)
vpXmin <- matrix(11:20,ncol=2)

l <- lapply(1:nrow(vpXmin),function(i) rbind(vpXmax[i,],vpXmin[i,]) )
l[[1]]
#     [,1] [,2]
#[1,]    1    6
#[2,]   11   16
l[[2]]
#     [,1] [,2]
#[1,]    2    7
#[2,]   12   17
for (i in 1:nrow(vpXmax)) {assign(paste0("l",i), rbind(vpXmax[i,],vpXmin[i,]) )}

> l1
#     [,1] [,2]
#[1,]    1    6
#[2,]   11   16

> l2
#     [,1] [,2]
#[1,]    2    7
#[2,]   12   17