将c#代码翻译为R.

cMi*_*nor 1 c# r code-translation

我有一张桌子:

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
Run Code Online (Sandbox Code Playgroud)

我想在一个向量中得到列的总和

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
Run Code Online (Sandbox Code Playgroud)

我是C#这样做的

for ( i = 0; i < columns; i++)
{
  vector[i] += reader.GetDouble(i);
}
Run Code Online (Sandbox Code Playgroud)

在读者得到相应的元素

但是如何在R中做这种事情呢?

所以我会开始......

for(i in (1:columns))
{

}
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 5

colSums(x)
Run Code Online (Sandbox Code Playgroud)

要么

apply(x,2,sum)
Run Code Online (Sandbox Code Playgroud)

如果你想更通用,效率更低.

编辑:如果你想要效率更低并使用for循环,

v <- numeric(ncol(x))
for (i in seq(ncol(x))) {
   v[i] <- sum(x[,i])
}
Run Code Online (Sandbox Code Playgroud)

我们可以继续通过(1)使用嵌套for循环和(2)未能为向量预分配空间来降低效率...

也可以看看:

  • @cMinor如果你正在学习R,那么现在最好打破你的for循环习惯.许多操作和函数已经为你进行了矢量化.如果你发现自己编写了一个for循环,那么已经有一个函数可以更高效地完成该任务(并且输入更少).如果你发现自己编写了一个嵌套的for循环,闹铃应该__ally_振铃.(显然,在某些情况下它们是不可避免的,但是......但是......) (5认同)