小编use*_*616的帖子

向CRAN提交R-package有哪些步骤以及每个步骤需要多长时间?

我注意到,一旦提交到传入(ftp://cran.r-project.org/incoming),包名称将收到以下后缀.save,.pending和.noemail.然后,包裹从传入中消失.我想下一步是CRAN维护者把它放在主服务器上(http://cran.r-project.org/src/contrib/ http://cran.r-project.org/web/packages/)然后它传播到镜子.

我的问题:

(1)有人可以确认步骤并提供详细信息.特别是在包从传入消失后发生的事情(没有找到检查该步骤的状态的方法)

(2)每个步骤平均需要多长时间?

谢谢!

r cran

17
推荐指数
1
解决办法
3282
查看次数

使用doSMP和foreach的并行随机森林大大增加了内存使用量(在Windows上)

当串行执行随机森林时,它在我的系统上使用8GB的RAM,当并行执行它时,它使用超过两倍的RAM(18GB).如果并行执行此操作,如何将其保持在8GB?这是代码:

install.packages('foreach')
install.packages('doSMP')
install.packages('randomForest')

library('foreach')
library('doSMP')
library('randomForest')

NbrOfCores <- 8 
workers <- startWorkers(NbrOfCores) # number of cores
registerDoSMP(workers)
getDoParName() # check name of parallel backend
getDoParVersion() # check version of parallel backend
getDoParWorkers() # check number of workers


#creating data and setting options for random forests
#if your run this please adapt it so it won't crash your system! This amount of data  uses up to 18GB of RAM.
x <- matrix(runif(500000), 100000)
y <- gl(2, 50000)
#options
set.seed(1)
ntree=1000 …
Run Code Online (Sandbox Code Playgroud)

memory parallel-processing r random-forest

7
推荐指数
1
解决办法
1726
查看次数

在循环中使用kernlab包中的rbfdot表现不佳

我需要加速的缓慢工作代码(函数rbf来自kernlab包)的简化示例:

install.packages('kernlab')       
library('kernlab')

rbf <- rbfdot(sigma=1)

test <- matrix(NaN,nrow=5,ncol=10)
for (i in 1:5) {
               for (j in 1:10) { test[i,j] <- rbf(i,j)}
               }
Run Code Online (Sandbox Code Playgroud)

我试过outer()但它不起作用,因为该rbf函数没有返回所需的长度(50).我需要加快这个代码的速度,因为我有大量的数据.我已经读过,矢量化将是加速这一过程的圣杯,但我不知道如何.

你能指点我正确的方向吗?

performance r

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

并行化R中的函数(不是循环!)

我想并行化一个名为unparallelizedfnc的函数.该函数调用其他四个函数(需要很长时间才能计算)并存储结果.最后结果合并.考虑我的功能的玩具示例(当然这些不是我称之为的四个真实功能,仅用于演示).

如何在具有多个内核的计算机上并行化result1,result2,result3和result4的计算?我希望它可以在Windows,Linux和Mac OSX上运行.在这种情况下,不需要对并行化版本进行基准测试(由于开销会慢一些,但在我的实际代码中它会更快).

如果四个结果是相同的函数(但具有不同的数据),我可以使用并行for循环(foreach)或并行应用,但在这种情况下,函数是不同的.

unparallelizedfnc <- function(x) {

  result1 <- sum(x)
  result2 <- median(x)
  result3 <- min(x)
  result4 <- max(x)

  result <- mean(c(result1,result2,result3, result4))
  result
}


unparallelizedfnc(rnorm(100000))
Run Code Online (Sandbox Code Playgroud)

parallel-processing r

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

加速R循环

使用apply系列中的函数可以轻松地在R中加速循环.如何在下面的代码中使用apply函数来加快速度?注意,在循环内,在每次迭代时,置换一列并将函数应用于新数据帧(即,具有一列置换的初始数据帧).我似乎无法申请工作,因为必须在循环内构建新的数据框.

#x <- data.frame(a=1:10,b=11:20,c=21:30) #small example
x <- data.frame(matrix(runif(50*100),nrow=50,ncol=100)) #larger example
y <- rowMeans(x)

start <- Sys.time()  

totaldiff <- numeric()

for (i in 1:ncol(x)){
    x.after <- x

    x.after[,i] <- sample(x[,i])

    diff <- abs(y-rowMeans(x.after))

    totaldiff[i] <- sum(diff)

}

colnames(x)[which.max(totaldiff)]

Sys.time() - start
Run Code Online (Sandbox Code Playgroud)

loops for-loop r apply

0
推荐指数
1
解决办法
1329
查看次数

如何根据函数中的名称选择列表元素?

考虑这个清单:

l <- list(a=1:10,b=1:10,c=rep(0,10),d=11:20)
Run Code Online (Sandbox Code Playgroud)

然后考虑这个示例代码(代表真正的更大代码).它只是根据名称选择列表中的正确元素.

参数:

object:最多包含四个元素的列表(有时少于四个).元素始终称为a,b,c和d,但并不总是以相同的顺序出现在列表中.

x:要选择的元素的名称(即a,b,c或d)

slct <- function(object,x) {
   if (x=="a") {
    object$a
  } else if (x=="b") {
    object$b
  } else if (x=="c") {
    object$c
  } else if (x=="d") {
    object$d
  }
}

slct(l,"d")
Run Code Online (Sandbox Code Playgroud)

当你不仅仅有4个元素,而是数百个元素时,这种方法变得无法实现.此外,我无法根据数字(例如,对象[[1]])进行选择,因为每次元素的顺序不同.那么如何缩短上面的代码呢?

我在考虑SAS中的宏观方法,但当然这在R中不起作用.

slct <- function(object,x) {

  object$x
}
object$a

slct(object=l,x="a")
Run Code Online (Sandbox Code Playgroud)

我有什么可以替换对象$ x以使其工作,但代码少于上面的代码?

get r

0
推荐指数
1
解决办法
2830
查看次数