2017-10-10 166 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