小编New*_*tat的帖子

何时在R中使用for循环

几乎只要你完成了对R的介绍,你可能已经学习了for循环的语法,你被告知要避免R中的循环!

R是一种矢量化语言,所以你被告知永远不要做类似的事情

x = 1:10
y = 2:11
z = rep(NA, 10)
for i in 1:10{    
    z[i] = x[i] + y[i]    
}
Run Code Online (Sandbox Code Playgroud)

而是做

z = x + y
Run Code Online (Sandbox Code Playgroud)

您还被告知使用*ply函数族来进行迭代循环.

我的问题是,除了潜在的代码可读性场景之外,是否还有很好的时间用于R中的循环?

performance loops r vectorization

5
推荐指数
2
解决办法
285
查看次数

带有foreach的两个rbinded数据帧的输出列表

假设我想foreachdoParallel包中使用返回两个不同维度的数据框列表,如下所示:

a<-NULL
b<-NULL
for(i in 1:100){
  a<-rbind(a,data.frame(input=i,output=i/2))
  if(i > 5){
    b<-rbind(b,data.frame(input=i,output=i^2))
  }
}
list(a,b)
Run Code Online (Sandbox Code Playgroud)

因为foreach返回一个对象,所以没有(至少对我来说)显而易见的方法来执行上述操作foreach.

注意:这是我实际使用的问题的一个简化版本,因此通过使用lapply(或沿着这些行的某些东西)来解决问题是行不通的.我的问题的精神是如何做到这一点foreach.

parallel-processing for-loop r parallel-foreach

4
推荐指数
1
解决办法
2572
查看次数

R data.table:将向量转换为一行data.table

我有一个字符向量x,我想以快速的方式变成一行data.table.该命令data.table(x)返回一列data.table.现在,data.table(t(x))完成工作,但我想知道是否有更快的方法.

optimization r data.table

3
推荐指数
1
解决办法
2251
查看次数

沿指定轴的两个 numpy 数组的外部总和

我有两个numpy.array对象xy其中x.shapeis(P, K)y.shapeis (T, K)。我想对这两个对象进行外部求和,以使结果具有 shape (P, T, K)。我知道np.add.outernp.einsum功能,但我无法让它们执行我想要的操作。

下面给出了预期的结果。

  x_plus_y = np.zeros((P, T, K))
  for k in range(K):
    x_plus_y[:, :, k] = np.add.outer(x[:, k], y[:, k])
Run Code Online (Sandbox Code Playgroud)

但我必须想象有一种更快的方法!

python numpy vectorization

3
推荐指数
1
解决办法
136
查看次数