2017-10-10 206 views
0

我想将由for循环输出的矩阵结合到R中函数内的所有变量上? 可以说我有179=length(b)变量,并且每个变量给出的矩阵有2000 rows=nrow(data.test)28 columns=length(x2)。 最终的矩阵应该有rows=nrow(data.test)length(x2) * (ncol(data.test)-1) 我试图for循环如下,但价值并没有在过去的矩阵存储如何将由for循环输出的矩阵合并为r

MyFunction <- function(data.train,x2,no.sample,data.test) 
{ pre_var = matrix(,nrow = nrow(data.test), ncol = length(x2) * (ncol(data.test)-1)) 
for(b in 1:(ncol(data.test)-1)) 
{ false= NULL ; true=NULL 
    pred_test = matrix(,nrow = nrow(data.test), ncol = length(x2)) 
    for(w in 1:length(x2)) 
    { ## there are some lines here to produce false and true values 

    pred_test[,w] = as.numeric(ifelse(data.test[,b] > x2[w] 
             ,true[w] ,false[w]))} 
    pre_var = cbind(pre_var,pred_test) 
} 
results = NULL 
results = pre_var 
} 
+0

也许你可以试着把它放在列表中,然后执行cbind。也许这可以让你更容易地调试 – zwep

+0

你的意思是像这样pre_var = list(cbind(pre_var,pred_test)是这样的) – Amani

+0

@Amani你确定逻辑吗? 'true < - NULL; true [5]'(reult始终为NULL) – jogo

回答

0

让我们为简单起见,假设这是你的成果之一的矩阵

A = matrix(runif(9),ncol=3) 

你想要做什么,先把它们放在一个列表中。在这个设置中,我只是重复我的原始矩阵。在你的情况下,你当然会生成你的矩阵

A_list = rep(list(A),5) 

下一步是把它们绑定在一起。这里我们有一个简单的cbind-forloop。

n <- length(A_list) 
res <- NULL 
for(i in seq(n)){ 
    res <- cbind(res, A_list[[i]]) 
} 
res 

Et Voila,我想这是你想要的。

+0

工作得很好,谢谢@zwep – Amani