小编Bac*_*lin的帖子

保留示例部分中的缩进

Roxygen使我的工作变得更加容易,并且在大多数情况下都非常直观.我从未弄清楚的一件事是如何在@examples部分保留缩进以便roxygenize("myPackage")包含结果

#' @examples
#' sapply(1:10, function(i){
#'     x <- rbind(matrix(rnorm(20), 10, 2),
#'                matrix(rnorm(20), 10, 2) + i)
#'     myFunc(x)
#' }
Run Code Online (Sandbox Code Playgroud)

将会

\examples{sapply(1:10, function(i){
    x <- rbind(matrix(rnorm(20), 10, 2),
               matrix(rnorm(20), 10, 2) + i)
    myFunc(x)
}}
Run Code Online (Sandbox Code Playgroud)

代替

\examples{sapply(1:10, function(i){
x <- rbind(matrix(rnorm(20), 10, 2),
matrix(rnorm(20), 10, 2) + i)
myFunc(x)
}}
Run Code Online (Sandbox Code Playgroud)

这是一个小细节,但它使所有但最简单的例子不必要地难以阅读,所以如果有人可以帮助我,我会很感激.

编辑:此错误已在更高版本的roxygen中得到纠正.

r roxygen

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

使用路径的弯曲的矢量图形

当在R中绘制弯曲形状时,它们通常由一组短直线段(具有圆形线末端)组成.结果看起来对人眼来说很好,但是有点迂回的做法,因为你需要插入曲线来获得段的坐标.它还会产生不必要的大文件,尽管这不是一个大问题,除非绘图包含极端数量的曲线.

有没有办法使用由锚点和枢轴点组成的路径以正确的方式创建弯曲的矢量形状,如下图所示?

在此输入图像描述

graphics r

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

蛮力的最佳顺序解决了键盘代码锁定问题

可能重复:
需要帮助构建有效的穷举搜索算法

想象一下,您必须通过在键盘上输入正确的4位数代码来打开锁定的门.在每次按键后,锁定会评估输入的最后4位数字的顺序,通过输入123456您已经评估了3个代码:1234,23453456.

  • 评估所有10^4不同组合的最短按键顺序是什么?
  • 是否有一种方法可以轻松遍历整个空间以供人类遵循?

我不时地思考这个问题,因为我的一个朋友不得不蛮力锁定这种锁,不必在冬天在户外过夜.


我微弱地试图缠绕它

使用长度L=4数字代码和大小数字的"字母",D=10最佳序列的长度不能短于D^L + L - 1.在比[L,D] = [4,10]我更小的模拟中通过半随机搜索空间获得最佳结果.但是,我不知道是否存在任意[L,D]对的解决方案,如果我不得不使用它,将无法记住解决方案.

到目前为止的经验教训

当计划在另一个城镇的朋友家过夜时,如果那个人出去参加聚会并且不会听到她的手机,请务必在凌晨1点到达.

algorithm

6
推荐指数
2
解决办法
2925
查看次数

检查父函数中是否缺少参数

我有一个函数f来计算调用它的环境的摘要.在这个简单的例子中,它只是总结了所有找到的对象.

f <- function(){
   x <- ls(parent.frame())
   sum(sapply(x, get, envir=parent.frame()))
}
g <- function(x = 7, y){
    z <- 3
    f()
}
Run Code Online (Sandbox Code Playgroud)

但是,如果从缺少参数的函数内调用它将引发错误.

R> g(y = 34)
[1] 44

R> g()
Error in FUN(c("x", "y", "z")[[2L]], ...) : 
  argument "y" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

为了适当地处理它,我需要一种方法来从内部f判断y环境中g是否有其他任意对象是一个参数g,在这种情况下是否缺失.

到目前为止我的尝试

尝试不同的解决方案

debug(f)
g()
Run Code Online (Sandbox Code Playgroud)

当然missing(y)不起作用,因为y不是一个论据f.更改missing评估的环境也不起作用,因为我们仍处于调用堆栈的同一级别:

Browse[2]> eval(missing(y), parent.frame())
Error in missing(y) : 'missing' can only …
Run Code Online (Sandbox Code Playgroud)

environment r

6
推荐指数
1
解决办法
5076
查看次数

Kaplan-Meier包括生存和移植数据

我所拥有的是使用R进行机械性心脏支持的患者的Kaplan-Meier分析.

我需要的是将以下数据添加到图中(如示例中所示):

  • 因心脏移植而幸存的患者(HTX)
  • 死亡的病人

换句话说,有两组,其中一组是另一组(所有患者)的子集(移植患者).这两条曲线必须从0/0开始并且会增加.

我自己的情节是通过:

pump <- read.table(file=datafile, header=FALSE,
                   col.names=c('TIME', 'CENSUS', 'DEVICE'))
# convert days to months
pump$TIME <- pump$TIME/(730/24)
mfit.overall <- survfit(Surv(TIME, CENSUS==0) ~ 1, data=pump)
plot(mfit.overall, xlab="months on device", ylab="cum. survival", xaxt="n")
axis(1, at=seq(from=0, to=24, by=6), las=0)
Run Code Online (Sandbox Code Playgroud)

我该如何添加另外两条曲线?

亲切的问候约翰

样本Kaplan Meier曲线:http://i.stack.imgur.com/158e8.jpg

演示数据:

生存数据,进入泵:

TIME    CENSUS  DEVICE
426     1       1
349     1       1
558     1       1
402     1       1
12      0       1
84      0       1
308     1       1
174     1       1
315     1       1
734 …
Run Code Online (Sandbox Code Playgroud)

r survival-analysis

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

多维数组的R数组索引

我对R中的多维数组有一个简单的数组索引问题。我正在做很多模拟,每个模拟都给出一个矩阵形式的结果,其中将条目分类。例如,结果看起来像

aresult<-array(sample(1:3, 6, replace=T), dim=c(2,5), 
               dimnames=list(
                 c("prey1", "prey2"), 
                 c("predator1", "predator2", "predator3", "predator4", "predator5")))
Run Code Online (Sandbox Code Playgroud)

现在,我想将实验结果存储在3D矩阵中,其中前两个维度与in相同,aresult第三个维度包含属于每个类别的实验数量。所以我的数列应该看起来像

Counts<-array(0, dim=c(2, 5, 3), 
              dimnames=list(
                c("prey1", "prey2"), 
                c("predator1", "predator2", "predator3", "predator4", "predator5"),
                c("n1", "n2", "n3")))
Run Code Online (Sandbox Code Playgroud)

在每个实验之后,我都希望将三维中的数字增加1,并使用中的值aresults作为索引。

不使用循环怎么办?

r multidimensional-array

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

R - 字符集不是 UTF-8;请更改您的区域设置

经过长时间的努力,我在 Debian Wheezy 上配置了 R Server 和 rApache。我能够安装软件包并做一些事情。但是当我编写一些函数时,我收到主题行中提到的错误。

当我写这个命令时 - Sys.getlocale(). 我得到的答复是"C"

尝试搜索论坛,但我找不到。请一些人帮助我找到解决方案。

提前致谢!!

debian r

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

R Parallel,每次使用并行应用时创建一个新集群是否更好?

我正在 20 个核心上使用parLapply函数。我想其他功能也是一样的parSapply......

首先,将簇作为参数传递给函数以便该函数可以在不同的子函数之间调度簇的使用是一种不好的做法吗?

其次,我将此集群参数传递给一个函数,因此我认为每次使用时它都是同一个集群parLapply,每次调用都使用新集群会更好吗parLapply

谢谢

参考值

parallel-processing r

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

通过ssh安装包

我在ssh可访问的服务器上有一个私有R包存储库.在服务器上运行R时,我可以install.packages通过设置以下选项从repo安装软件包

options(repos=c("http://ftp.sunet.se/pub/lang/CRAN",
                "file:///path/to/repo/base/directory"))
install.packages("myPrivateGoodies")
Run Code Online (Sandbox Code Playgroud)

是否可以通过在ssh上设置URL来从本地计算机上的R会话执行相同的操作?我想它应该很容易设置,但我无法使用以下任何工作:

options(repos=c("http://ftp.sunet.se/pub/lang/CRAN",
                "ssh://user@server:/path/to/repo/base/directory",
                "sftp://user@server:/path/to/repo/base/directory"))
Run Code Online (Sandbox Code Playgroud)

该手册没有提及ssh,但声称https通常不起作用,所以也许ssh也有问题.RSA认证得到了处理,~/.ssh/config我可以毫无问题地连接到终端的回购sftp user@server:/path/to/repo/base/directory(无需输入任何密码).

更新

按照@spacedman的建议并使用本指南,我设法让它像我想要的那样无缝地工作.

在bash中

$ sshfs server:/path/to/repo/base/directory ~/mnt/remote-repo
Run Code Online (Sandbox Code Playgroud)

然后在R

options(repos=c("http://ftp.sunet.se/pub/lang/CRAN",
                "file:///home/backlin/mnt/remote-repo"))
Run Code Online (Sandbox Code Playgroud)

r repository

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

如何高效地矢量化超几何CDF计算?

我有一组数据框,每个数据框有 4 列和 1,000,000 行。对于每一行,我想运行一个超几何测试,将这些列的 4 个值作为输入并返回一个 p 值(使用超几何分布的累积概率密度函数)。

我尝试了两种基于 SciPy 的实现(如下),但扩展性都很差。有没有其他方法可以以更高的效率实现我下面所做的事情?我有一个用 R 编写的工作解决方案(在底部),但不幸的是代码必须用 Python 编写,因为它要在从 Postgres DB 加载数据的Airflow任务中使用,而目前没有 Postgres R 的钩子。

SciPy 实现缓慢

这样创建的示例数据(使用 10,000 行而不是完整的 52 * 1,000,000 行):

import numpy as np
import pandas as pd
from scipy.stats import hypergeom
from timeit import default_timer as timer

n_rows = 10000
n_total = 1000
max_good = 400
max_sample = 200
s = 100

df = pd.DataFrame({
  'ngood': np.random.hypergeometric(ngood=max_good, nbad=n_total - max_good,
                                    nsample=s, size=n_rows),
  'nsamp': np.random.hypergeometric(ngood=max_sample, nbad=n_total - …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy airflow

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