2011-04-01 71 views
0

我中的R這個矩陣,稱爲MRASTI genereatet從命令從間隔

MRASTI <- matrix(sample(data.matrix(pune, rownames.force=NA), 
         22000, replace=TRUE), 
       nrow=1000, byrow=TRUE) 

創建函數和我有這個間隔

x[(x>14274.19)&(x<14458.17)] 

這與9998個元素的向量。我想計算這個公式:

y <- 1/length(MRASTI) * sum((MRASTI - x)^2)

其中x從以前的間隔取值。我如何在R中做到這一點? 謝謝

我試試這個命令:

> for (i in 1:9998) {y<-1/length(MRASTI)*sum((MRASTI-x[i])^2)} 

但只產生一個值 謝謝

+0

請發佈一個可重複的例子。按原樣,您的數據矩陣需要一個名爲「pune」的對象才能工作。嘗試使用'dput'。 – 2011-04-01 10:09:20

+0

另外,你可以嘗試使用網站提供的格式工具,而不是你自己的隨機標記?把你的代碼稍微空出來一點。看看我在編輯你的Q中做了什麼,看看如何分隔空間並格式化代碼。要格式化代碼塊,請突出顯示代碼並單擊看起來像兩個大括號的圖標:'{}' – 2011-04-01 10:14:12

回答

1

問題是與y在這一行:

for (i in 1:9998) { 
    y <- 1/length(MRASTI)*sum((MRASTI-x[i])^2) 
} 

在每個循環迭代你被覆蓋y。簡單的解決辦法是:

y <- numeric(length = 9998) 
for (i in seq_along(y)) { 
    y[i] <- 1/length(MRASTI) * sum((MRASTI - x[i])^2) 
} 

沒有看到一些示例對象和代碼創建並運行你的代碼,這是很難說,如果我們能vectorise這個給你,讓你不需要一個循環。

+0

它確實對我很好,再次感謝您:) – Silda 2011-04-01 10:23:08