2011-09-16 151 views
1

我有一個表,如:翻譯C#代碼至R

12 34 45 45 56 
23 45 56 77 77 
14 94 15 45 56 
15 38 25 84 65 
72 35 35 4 57 
18 14 45 47 56 
42 34 55 55 59 

我想在矢量獲得列的和喜歡

vector[0]= 12+23+14+15+72+18+42 
vector[1]= 34+45+94+38+35+14+34 
vector[2]= 45+56+15+25+35+45+55 
vector[3]= 45+77+45+84+4 +47+55 
vector[4]= 56+77+56+65+57+56+59 

我做到了,在C#

for (i = 0; i < columns; i++) 
{ 
    vector[i] += reader.GetDouble(i); 
} 

在哪裏讀者得到相應的元素

但是如何做到這樣的事R

,所以我會首先..

for(i in (1:columns)) 
{ 

} 

回答

5
colSums(x) 

apply(x,2,sum) 
如果你想成爲更普遍的,效率較低

編輯:如果你想甚至低效和使用for循環,

v <- numeric(ncol(x)) 
for (i in seq(ncol(x))) { 
    v[i] <- sum(x[,i]) 
} 

我們可以繼續通過(1)使用嵌套的循環和(2)未能使這個效率較低預分配的空間矢量...

參見:

+0

我將它分配給矢量嗎? 'vector <-colSums(x)' – cMinor

+0

有什麼方法可以使用for循環,只是爲了知道? – cMinor

+5

@cMinor如果您正在學習R,那麼現在最好先打破您的for循環習慣。許多操作和函數已經爲您製作了矢量化。如果你發現自己正在編寫一個for循環,那麼很可能已經有一個函數更有效地完成這個任務(並且輸入的次數更少)。如果您發現自己正在編寫一個嵌套for循環,鬧鈴應該會響起。 (很顯然,在某些情況下它們是不可避免的,但仍然是...) – joran