几乎只要你完成了对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]    
}
而是做
z = x + y
您还被告知使用*ply函数族来进行迭代循环.
我的问题是,除了潜在的代码可读性场景之外,是否还有很好的时间用于R中的循环?
假设我想foreach在doParallel包中使用返回两个不同维度的数据框列表,如下所示:
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)
因为foreach返回一个对象,所以没有(至少对我来说)显而易见的方法来执行上述操作foreach.
注意:这是我实际使用的问题的一个简化版本,因此通过使用lapply(或沿着这些行的某些东西)来解决问题是行不通的.我的问题的精神是如何做到这一点foreach.
我有一个字符向量x,我想以快速的方式变成一行data.table.该命令data.table(x)返回一列data.table.现在,data.table(t(x))完成工作,但我想知道是否有更快的方法.
我有两个numpy.array对象x,y其中x.shapeis(P, K)和y.shapeis (T, K)。我想对这两个对象进行外部求和,以使结果具有 shape (P, T, K)。我知道np.add.outer和np.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])
但我必须想象有一种更快的方法!