2011-09-16 110 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