为了得到myscript.R使用作业调度集群从属节点上运行(即,PBS)
目前,我使用以下命令将R脚本提交给从属节点
qsub -S /bin/bash -p -1 -cwd -pe mpich 1 -j y -o output.log ./myscript.R
Run Code Online (Sandbox Code Playgroud)
R中是否有函数允许我在头节点上运行myscript.R并将各个任务发送到从节点?就像是:
foreach(i=c('file1.csv', 'file2.csv', pbsoptions = list()) %do% read.csv(i)
Run Code Online (Sandbox Code Playgroud)
更新:qsub命令的替代解决方案是#/usr/bin/Rscript从第一行删除myscript.R并直接调用它,如@Josh所指出的
qsub -S /usr/bin/Rscript -p -1 -cwd -pe mpich 1 -j y -o output.log myscript.R
Run Code Online (Sandbox Code Playgroud) 我想提高绘图的速度,我很满意(并且需要很多代码)R图形和ggplot包 - 所以我只想知道如何配置我的系统来加速绘图.
特别:
更新:评论中的问题答案:
规格:Ubuntu 11.04,intel Core Duo,8GB ram,但我更感兴趣的是图形计算或图形渲染是限制性的,如果是这样,我该如何使用这些信息.
我的情节有很多对象,但我不知道绘图的计算成本是多少.我在绘图时没有做任何具体的分析(我在完成任何必要的分析之后进行绘图),虽然我知道有些是"动态"完成的,就像绘制平滑线或甚至将数据转换到位置时一样.
我有一些大的netCDF文件,包含0.5度分辨率的地球的6小时数据.
每年有360个纬度点,720个经度点和1420个时间点.我有两个年度文件(12 GB ea)和一个110年数据(1.3 TB)的文件存储为netCDF-4(这里是1901年数据的一个例子,1901.nc,它的使用政策,以及原始,公共我开始使用的文件).
根据我的理解,从一个netCDF文件中读取它应该更快,而不是循环遍历由year和最初提供的变量分隔的文件集.
我想提取每个网格点的时间序列,例如从特定纬度和经度开始10或30年.但是,我发现这很慢.例如,从点位置读取10个值需要0.01秒,尽管我可以在0.002秒内从单个时间点读取10000个值的全局切片(维度的顺序是lat,lon,时间):
## a time series of 10 points from one location:
library(ncdf4)
met.nc <- nc_open("1901.nc")
system.time(a <- ncvar_get(met.nc, "lwdown", start = c(100,100,1),
count = c(1,1,10)))
user system elapsed
0.001 0.000 0.090
## close down session
## a global slice of 10k points from one time
library(ncdf4)
system.time(met.nc <- nc_open("1901.nc"))
system.time(a <- ncvar_get(met.nc, "lwdown", start = c(100,100,1),
count = c(100,100,1)))
user system elapsed
0.002 0.000 0.002
Run Code Online (Sandbox Code Playgroud)
我怀疑这些文件是为了优化空间层的读取而编写的,因为a)变量的顺序是lat,lon,time,b)这将是生成这些文件的气候模型的逻辑顺序和c)因为全局范围是最常见的可视化. …
我编写了一个构建脚本,希望能够在安装时选择最新版本的脚本,例如包名是package_X.XXtar.gz,并且有多个副本.
有没有办法将build命令指向package_Y.tar.gz?哪里Y = max(XXX)?
是否可以运行package.skeleton('pkgname')并将所有.R文件放在一个文件或一组文件中,而不是每个函数一个文件?
我正在与之合作的开发人员问我为什么我将每个函数都放在一个单独的文件中,而我唯一的理由是"这是默认行为".
最近,我找到了base::files命令.随着像其它命令getwd,write.lines,file.show,dir,等等似乎有一些bash的函数R当量.
我也写R中,简化到调用一些功能 ssh和rsync通过system.
例如:
rsync <- function(from, to){
system(paste('rsync -outi', from, to, sep = ' '), intern=TRUE)
}
Run Code Online (Sandbox Code Playgroud)
但在我进一步讨论之前,我有几个问题:
rsync示例中概述的方法? 问题:我正在测试我正在开发的软件包中的函数,并且想知道是否可以建议一些如何执行此操作的一般指导原则.这些功能包括大量的统计建模,转换,子集和绘图.是否有"标准"或足够的测试?
一个例子:提示我问这个问题的测试,
函数dtheta:
dtheta <- function(x) {
## find the quantile of the mean
q.mean <- mean(mean(x) >= x)
## find the quantiles of ucl and lcl (q.mean +/- 0.15)
q.ucl <- q.mean + 0.15
q.lcl <- q.mean - 0.15
qs <- c(q.lcl, q.mean, q.ucl)
## find the lcl, mean, and ucl of the vector
c(quantile(x,qs), var(x), sqrt(var(x))/mean(x))
}
Run Code Online (Sandbox Code Playgroud)
第1步:制作测试数据:
set.seed(100) # per Dirk's recommendation
test <- rnorm(100000,10,1)
Run Code Online (Sandbox Code Playgroud)
第2步:将函数的预期输出与函数的实际输出进行比较:
expected <- quantile(test, c(0.35, 0.65, 0.5))
actual <- dtheta(test)[1:3] …Run Code Online (Sandbox Code Playgroud) 是否可以在Google Spreadsheets中定义可在任何单元格中使用的功能?
如果我能够以与使用本机函数相同的方式定义和使用引用其他单元格的函数,将会很有帮助,例如输入 =myfunction(C1, C2, C3)
我正在使用rjagsR库.该函数coda.samples产生一个mcmc.list,例如(from example(coda.samples)):
library(rjags)
data(LINE)
LINE$recompile()
LINE.out <- coda.samples(LINE, c("alpha","beta","sigma"), n.iter=1000)
class(LINE.out)
[1] "mcmc.list"
Run Code Online (Sandbox Code Playgroud)
但是,我想使用该plot.bugs函数,它需要一个bugs对象作为输入.
是否可以将对象从对象转换mcmc.list为bugs对象,以便plot.bugs(LINE.out)?
请注意,stats.SE上有一个类似的问题,一个多月没有得到答复.这个问题的结果是在2012年8月29日结束.
我发现R2WinBUGS包有一个函数"as.bugs.array"函数 - 但是不清楚该函数如何应用于mcmc.list.
我想用一个带有"无限"维度的R来编写一个netCDF文件,以后我可以扩展.
这是我尝试过的:
library(ncdf4)
## define lat, lon time dimensions
lat <- ncdim_def("latitude", "degrees_east", vals = 44.0, unlim = TRUE)
lon <- ncdim_def("longitude", "degrees_north", vals = -88.5, unlim = TRUE)
time <- ncdim_def("time", "days since 0000-01-01", 1:1000)
## define data with these dimensions
x <- ncvar_def("myvar", units = "m2", dim = list(lat, lon, time))
## create, write to, close nc file
nc <- nc_create(filename = "tmp.nc", vars = list(x))
ncvar_put(nc = nc, varid = x, vals = 1:1000)
nc_close(nc = …Run Code Online (Sandbox Code Playgroud)