相关疑难解决方法(0)

R是否适用于家庭而不是语法糖?

......关于执行时间和/或记忆.

如果不是这样,请使用代码段进行证明.请注意,矢量化的加速不计算在内.增速必须来自apply(tapply,sapply,...)本身.

r apply

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

为什么apply()方法比R中的for循环慢?

作为最佳实践的问题,我试图确定apply()在矩阵中创建函数是否更好,或者如果通过函数简单地循环矩阵更好.我尝试了两种方式,并惊讶地发现apply()速度较慢.任务是取一个向量并将其评估为正数或负数,然后如果为正数则返回1,如果为负则返回-1.该mash()函数循环和squish()功能传递给apply()函数.

million  <- as.matrix(rnorm(100000))

mash <- function(x){
  for(i in 1:NROW(x))
    if(x[i] > 0) {
      x[i] <- 1
    } else {
      x[i] <- -1
    }
    return(x)
}

squish <- function(x){
  if(x >0) {
    return(1)
  } else {
    return(-1)
  }
}


ptm <- proc.time()
loop_million <- mash(million)
proc.time() - ptm


ptm <- proc.time()
apply_million <- apply(million,1, squish)
proc.time() - ptm
Run Code Online (Sandbox Code Playgroud)

loop_million 结果:

user  system elapsed 
0.468   0.008   0.483 
Run Code Online (Sandbox Code Playgroud)

apply_million 结果:

user  system …
Run Code Online (Sandbox Code Playgroud)

benchmarking r

21
推荐指数
4
解决办法
2万
查看次数

R中的循环效率低下

早上好,

我在R中开发了几个月,我必须确保代码的执行时间不会太长,因为我分析了大数据集.

因此,我一直在尝试使用尽可能多的矢量化函数.

但是,我仍然想知道一些事情.

R中代价高昂的不是循环本身吗?我的意思是,当您开始在循环中修改变量时出现问题,例如是否正确?

因此我在思考,如果你只需要在每个元素上运行一个函数(你实际上并不关心结果)会怎么样.例如,在数据库中写入数据.你该怎么办?

1)使用mapply而不将结果存储在任何地方?

2)在向量上做一个循环,只对每个元素应用f(i)?

3)我可能错过了更好的功能吗?

(当然假设你的功能没有最佳矢​​量化).

foreach包裹怎么样?您是否通过使用它获得了任何性能提升?

loops functional-programming r

5
推荐指数
1
解决办法
3712
查看次数

在R中模拟骰子和掷硬币的结果

实验涉及滚动一个公平的模具并获得x说,然后抛出一个公平的硬币x次并记录尾巴的数量.我需要做50次这个实验并将结果记录在矢量中(我将用它绘制直方图.)

到目前为止这是我的代码:

    for (i in 1:100)
    {X <- sample(6,1,replace=TRUE,c(1,1,1,1,1,1)/6)
    Y <- sample(2,1,replace=TRUE,c(1,1)/2)}
    Youtcomes <- c(sum(Y))
    Youtcomes
Run Code Online (Sandbox Code Playgroud)

但是我没有给我一个包含100个元素的向量,而是只获得一个数字.我哪里错了?

注意:我必须使用for循环.

statistics r probability

-1
推荐指数
2
解决办法
2640
查看次数