2017-01-09 39 views
0

的其它兩個矩陣值的矩陣我想從我設法與給定數據集來做到這一點其他兩個矩陣填充使用不可預知的尺寸

填充使用信息的矩陣,但我需要這個整合在一個較大的腳本中,並且我用來填充較大矩陣的兩個矩陣的大小可能每次都不相同。

實施例的數據:

days = 150 
block <- matrix(c(50,120,150), nrow=3, ncol=1) 

     [,1] 
[1,] 50 
[2,] 120 
[3,] 150 

e1  <- matrix(c(0.1,0.5,0.7), nrow=3, ncol=1) 

     [,1] 
[1,] 0.1 
[2,] 0.5 
[3,] 0.7 

result <- matrix(0, nrow = 150, ncol=1) 

我需要創建自己取決於「塊」的每個號碼,即重複數的向量(來自E1截取)

下面的代碼演示中所期望的結果這個實例,但我試圖寫一個更靈活的腳本,可以應付少於或多於3'塊'

我明白這可能是一個更簡單的方法做到這一點,但我的頭卡住循環模式,我似乎無法得到出來!

for (v1 in 1:days){ 
    if(v1 <= block[1,1]){ 
    result[v1,1] <- e1[1,1] 
    } 
    else if (v1 > block[1,1] & v1 <= block[2,1]){ 
    result[v1,1] <- e1[2,1] 
    }  
    else if (v1 > block[2,1] & v1 <= block[3,1]){ 
    result[v1,1] <- e1[3,1] 
    } 
} 

任何幫助將不勝感激!

回答

1

可以使用的rep一個很好的功能得到這樣的:

result <- rep(e1, c(block[1], diff(block))) 
# cast the vector as a column matrix 
result <- matrix(result, length(result)) 

這工作,因爲rep將接受第二個參數的矢量,告訴多少次重複的第一個參數的每個元素。

如果你知道的時間長度未來,你可以結合線,像

result <- matrix(rep(e1, c(block[1], diff(block))), days) 

例如。

+0

哦,我的上帝,我可以哭泣。我花了數小時的時間:D 謝謝! – SDes

+0

當然可以。這對於靈活擴展矢量非常有用。 – lmo

相關問題