geom_smooth当y公式中的变量被转换时,有没有办法使用?例如:
#This works:
myplot <- qplot(speed, dist, data=cars)
(myplot + geom_smooth(method="lm", formula=y~log(x)))
#does not work
(myplot + geom_smooth(method="lm", formula=log(y)~x))
Run Code Online (Sandbox Code Playgroud)
我所追求的是这样一条线:
myplot + geom_line(aes(x=speed, y=exp(predict(lm(log(dist)~speed)))))
Run Code Online (Sandbox Code Playgroud) 我使用apparmor在Ubuntu 11.10上沙箱R. 我注意到的一件事是,对于R创建的每个png或pdf图,它都会显示警告:
(process:4589): GLib-WARNING **: getpwuid_r(): failed due to: Permission denied.
Run Code Online (Sandbox Code Playgroud)
但是,即使拒绝对/ etc/passwd的读访问,一切似乎都运行得很好.我不打算给R这些权限,因为它似乎没有必要我想做什么.然而,反复出现的警告有点令人讨厌.
R/src中的快速grep"getpwuid"显示了调用它的三个地方:
r-base-2.14.2/src/main/platform.c: stpwd = getpwuid(sb.st_uid);
r-base-2.14.2/src/unix/sys-unix.c: stpwd = getpwuid(getuid());
r-base-2.14.2/src/unix/sys-unix.c: stpwd = getpwuid(geteuid());
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚这是做什么的.
问题:
如何测试对象是否是S4类的实例(不确定这是否是正确的术语)?我知道函数,isS4但是对于类定义等也会返回true.例如:
traj <- setClass(
Class="Trajectories",
representation=representation(
times = "numeric",
traj = "matrix"
)
)
trajclass <- getClass("Trajectories")
trajobject <- new(Class="Trajectories",times=c(1,3),traj=matrix(1:4,ncol=2))
isS4(traj)
isS4(trajclass)
isS4(trajobject)
Run Code Online (Sandbox Code Playgroud)
trajobject在这种情况下,我只对包含数据的对象感兴趣; 与方法或类定义无关.是否有一个本机函数可用于测试S4对象是否是实际对象?即使用print(object)输出时开始:
类"foo"的对象.....
我有一大堆jpg图像,我想创建缩略图.图像都有不同的大小和分辨率,但我希望所有缩略图都有标准尺寸,例如120x80px.但是,我不想拉伸图像.所以我想做以下事情:
是否有linux命令可以这样做?我查看了imagemick转换,但我无法弄清楚如何进行居中裁剪.您似乎必须手动指定每个图像的裁剪区域?
我使用brew在OSX 10.7.5服务器上安装了R:
brew install R
Run Code Online (Sandbox Code Playgroud)
一切看起来都那么好,但是开罗没有工作:
> svg(tempfile())
Warning messages:
1: In svg(tempfile()) :
unable to load shared object '/usr/local/Cellar/r/2.15.2/R.framework/Resources/library/grDevices/libs//cairo.so':
dlopen(/usr/local/Cellar/r/2.15.2/R.framework/Resources/library/grDevices/libs//cairo.so, 6): image not found
2: In svg(tempfile()) : failed to load cairo DLL
Run Code Online (Sandbox Code Playgroud)
共享对象文件似乎完全丢失:
id-86-243:Resources jeroen$ ls -ltr library/grDevices/libs/
total 488
-rwxrwxr-x 1 jeroen admin 245764 Dec 22 17:03 grDevices.so
Run Code Online (Sandbox Code Playgroud)
我很少使用OSX,所以我不太确定这是否是R的特定分布中的错误,或者如果我在构建它时做错了什么?
当在我的 web 应用程序中调用 R 函数时,我想在发生错误时捕获堆栈跟踪并将其呈现给用户以进行调试。traceback()类似于交互式会话中的输出。但是,traceback当在错误处理程序内部调用它时,它似乎不起作用,它返回No traceback available:
f <- function() {
g <- function() stop("test traceback")
g()
}
errhandler <- function(e){
stacktrace <- traceback()
unlist(stacktrace);
}
out <- tryCatch(f(), error=errhandler)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以以编程方式捕获错误的堆栈跟踪吗?traceback()即获取错误后手动调用时得到的输出:
f()
traceback()
Run Code Online (Sandbox Code Playgroud) 如何在函数内获取递归应用的当前函数?这是一个简单的例子:
myfun <- function(x) {
if(is.list(x)){
lapply(x, myfun)
} else {
length(x)
}
}
Run Code Online (Sandbox Code Playgroud)
我想把它变成匿名,但是我不知道lapply在没有名字时如何告诉使用当前函数.我尝试Recall但是这不起作用:
(function(x) {
if(is.list(x)){
lapply(x, Recall)
} else {
length(x)
}
})(cars)
Run Code Online (Sandbox Code Playgroud)
也match.call()[[1]]没有帮助匿名函数.
我经常遇到需要检查某个条件是否适用于非常大的向量或列表的任何或所有元素的情况.例如,检查列表是否包含NULL我将使用的任何/仅元素:
any(vapply(x, is.null, logical(1))
all(vapply(x, is.null, logical(1))
Run Code Online (Sandbox Code Playgroud)
然而,这是低效的,因为它总是检查列表中的每个元素.更聪明的实现将停止检查何时找到第一个NULL或非NULL元素.即相当于:
is.null(x[[1]]) || is.null(x[[2]]) || is.null(x[[3]]) || ...
is.null(x[[1]]) && is.null(x[[2]]) && is.null(x[[3]]) && ...
Run Code Online (Sandbox Code Playgroud)
用for循环执行此操作很慢.r-base提供了一些特殊情况,例如,这anyNA是一个有效的版本any(is.na(.)).但是我想知道我们是否可以更普遍地实现它并提供用于检查条件的优化函数:
all_fast(x, is.null)
any_fast(x, is.null)
Run Code Online (Sandbox Code Playgroud)
但是也:
all_fast(x, function(z) {length(z) == 2})
all_fast(x, is, "POSIXt")
Run Code Online (Sandbox Code Playgroud) OpenCPUContent-Type: application/octet-stream当前在提供序列化 R 对象(即从serialize或保存的数据)时使用saveRDS。例如:
curl -v https://public.opencpu.org/ocpu/library/MASS/data/cats/rds 2>&1 \
| grep Content-Type
< Content-Type: application/octet-stream
< Access-Control-Allow-Headers: Origin, Content-Type, Accept, Cache-Control
< Access-Control-Expose-Headers: Location, X-ocpu-session, Content-Type, Cache-Control
Run Code Online (Sandbox Code Playgroud)
然而,对于客户端和其他 OpenCPU 服务器来说,在交换数据时使用指定的 MIME 类型区分任意 blob 和 rds 对象会很好。
问题:什么适合Content-Type序列化的 R 对象?例如:
application/r-rdsapplication/r-serialized-object请注意,RFC8848现在建议不要使用X-前缀,并指出:
在应用程序协议上下文中使用的新参数的创建者:
- 应该假设他们创建的所有参数可能会变得标准化、公开、普遍部署或可在多个实现中使用。
r ×8
cran ×4
linux ×2
apparmor ×1
c ×1
cairo ×1
content-type ×1
ggplot2 ×1
homebrew ×1
http ×1
image ×1
imagemagick ×1
linux-kernel ×1
macos ×1
performance ×1
s4 ×1
setuid ×1
stack-trace ×1
thumbnails ×1
ubuntu ×1