NULL如果在我提交的表单中没有任何内容放入文本框,我想要设置一个值.我怎样才能做到这一点?我试过插入,'NULL'但这只是将字添加NULL到字段中.
我不确定我应该为此提供什么代码,我只是编写一个UPDATE查询.
通过使用layout或,可以将多个简单绘图组合成单个图形中的面板par(mfrow=...).但是,更复杂的图表往往会在内部设置自己的面板布局,从而无法将其用作面板.有没有办法创建嵌套布局并将复杂的图形封装到单个面板中?
我有一种感觉,grid包可以实现这一点,例如通过在单独的视口中绘制面板,但无法弄清楚如何.这是一个演示问题的玩具示例:
my.plot <- function(){
a <- matrix(rnorm(100), 10, 10)
plot.new()
par(mfrow=c(2,2))
plot(1:10, runif(10))
plot(hclust(dist(a)))
barplot(apply(a, 2, mean))
image(a)
}
layout(matrix(1:4, 2, 2))
for(i in 1:4) my.plot()
# How to avoid reseting the outer layout when calling `my.plot`?
Run Code Online (Sandbox Code Playgroud)
我使用包中的heatmap.2函数gplots来生成热图.以下是单个热图的示例代码:
library(gplots)
row.scaled.expr <- matrix(sample(1:10000),nrow=1000,ncol=10)
heatmap.2(row.scaled.expr, dendrogram ='row',
Colv=FALSE, col=greenred(800),
key=FALSE, keysize=1.0, symkey=FALSE, density.info='none',
trace='none', colsep=1:10,
sepcolor='white', sepwidth=0.05,
scale="none",cexRow=0.2,cexCol=2,
labCol = colnames(row.scaled.expr),
hclustfun=function(c){hclust(c, method='mcquitty')},
lmat=rbind( c(0, 3), c(2,1), c(0,4) ), …Run Code Online (Sandbox Code Playgroud) 我正在开发一个包roxygen2,其中包括许多lattice基于可视化的包.这些都不错,但没有必要使用该程序包,因此lattice在上市Suggests:的第DESCRIPTION文件,而不是Depends:部分.
但是,我还没有想出如何加载lattice接获要求用户在两者传递的方式roxygenize()和R CMD check.以下两种方式都使得lattice看起来像未声明的依赖关系,并将返回以下错误.
##' @import lattice
{}
##' Visualization
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
xyplot(y ~ x)
}
Run Code Online (Sandbox Code Playgroud)
和
##' Visualization
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
library(lattice)
xyplot(y ~ x)
}
Run Code Online (Sandbox Code Playgroud)
两者都给出了同样的错误
$ R CMD check dummy.roxygen …Run Code Online (Sandbox Code Playgroud) 在准备打印数据时,我经常需要使它们比屏幕上显示的要小得多.将数字降低到几厘米的范围并不罕见.使用标准图形包par(cex=...)可以缩小整个图,以适应这么小的区域,看起来仍然是成比例的.是否与格子包中的相同?
基本上,如何在右侧面板的大小中绘制下图,但保留左侧面板的比例?

这个问题时不时地发生在我身上,它通常让我疯狂地进行实验trellis.par.get,trellis.par.set然后放弃并使用标准图形重绘整个图形(这非常繁琐).在发现时,trellis.par.set(simpleTheme(cex=...))我以为自己已经打了金币,但它似乎没有做任何事情.
我想重新缩放图中的所有内容,包括字体大小,边距和刻度尺寸.很多.我知道我可以简单地调整pdf(height=..., width=...)以获得我喜欢的比例,然后在排版中重新缩放它,例如InDesign或文字处理器,但我觉得如果每个pdf都有嵌入文件中的预期尺寸,我会得到更好的控制.
有几次我想检测R中的单击键但是找不到任何其他东西readline()或类似的东西.
一个例子是进行交互式绘图或数据浏览,并能够使用箭头键更改参数值并自动更新绘图.当然我可以使用readline()并让用户输入"u"然后而不是向上箭头,但我发现它不是很优雅.
是否可以通过system()某种方式读取stdin 的命令来完成?
编辑:我现在已经被告知其他地方stdin也会在做任何事情之前等待一个输入中风,并且立即捕捉击键是系统特定的并且很难完成.如果有人知道如何在ubuntu 10.10或任何其他Linux/unix系统上执行此操作,我很高兴知道.
我经常最终得到几个嵌套foreach循环,有时候在编写一般函数时(例如对于一个包),没有明显的并行化级别.有没有办法完成下面的模型描述?
foreach(i = 1:I) %if(I < J) `do` else `dopar`% {
foreach(j = 1:J) %if(I >= J) `do` else `dopar`% {
# Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
此外,有没有办法检测并行后端是否已注册,以便我可以避免收到不必要的警告消息?在CRAN提交之前检查包并且不打扰在单核计算机上运行R的用户时,这将非常有用.
foreach(i=1:I) %if(is.parallel.backend.registered()) `dopar` else `do`% {
# Do stuff
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间.
编辑:非常感谢您对核心和工作人员的所有反馈,并且你是对的,处理上述示例的最佳方法是重新考虑整个设置.我更喜欢下面这个triu想法,但它基本上是相同的.它当然也可以tapply像Joris建议的那样平行完成.
ij <- expand.grid(i=1:I, j=1:J)
foreach(i=ij$I, j=ij$J) %dopar% {
myFuction(i, j)
}
Run Code Online (Sandbox Code Playgroud)
然而,在我试图简化引起这个线程的情况时,我遗漏了一些关键的细节.想象一下,我有两个功能analyse,并batch.analyse和最好的水平,在并行依据的值可能是不同的n.replicates和n.time.points.
analyse <- function(x, y, n.replicates=1000){
foreach(r = 1:n.replicates) %do% {
# Do stuff with …Run Code Online (Sandbox Code Playgroud) 有没有办法阻止R在unix机器上使用任何虚拟内存?每当它发生时,都是因为我搞砸了然后我想中止计算.
我正在与其他几个人共享的强大计算机上处理大数据集.有时我会设置需要比可用内存更多RAM的命令,这会导致R开始交换并最终冻结整个机器.通常我可以通过ulimit在我的设置中解决这个问题~/.bashrc
ulimit -m 33554432 -v 33554432 # 32 GB RAM of the total 64 GB
Run Code Online (Sandbox Code Playgroud)
这导致R抛出错误并在尝试分配比可用内存更多的内存时中止.但是,如果我在并行化(通常使用snow包)时做出这种类型的错误,ulimit则无效并且机器无论如何都会崩溃.我想这是因为snow将工作程序作为不以bash运行的单独进程启动.如果我试着设置ulimit我的~/.Rprofile我只是得到一个错误:
> system("ulimit -m 33554432 -v 33554432")
ulimit: 1: too many arguments
Run Code Online (Sandbox Code Playgroud)
有人可以帮我找到实现这个目标的方法吗?
为什么我不能设置ulimit0虚拟内存bash?
$ ulimit -m 33554432 -v 0
Run Code Online (Sandbox Code Playgroud)
如果我这样做很快就会关闭.
在阅读科学论文时,我经常会遇到点不相交的情节.我怀疑它们中的许多是用一个名为GraphPad Prism的程序绘制的,但肯定必须有一种方法在R中做同样的事情.虽然它不完美(如下面的红点)我认为它看起来比随机抖动好多了.

如果有人知道如何做到这一点,最好使用一些基本功能,我会很高兴知道.
我想知道在记录函数时是否可以在roxygen2中的代码块中插入换行符?
如果我有内容\code{},roxygen2默认将所有换行折叠为单个空格.我尝试插入\cr内部来强制执行换行符,然后我得到了所需的行为,但是当我"R CMD CHECK"时我得到一个警告.有没有办法做到这一点?
例:
#' \code{
#' multiple
#' lines
#' }
Run Code Online (Sandbox Code Playgroud)