是否有一种很好的方法可以以R对象(例如列表)的形式从已安装的包中提取R-help页面.我想以标准化的JSON或XML模式的形式公开帮助页面.但是从DB获取R-help信息比我想象的要难.
我不久前一起讨厌获取R帮助手册页的HTML.但是我宁愿有一个包含这些信息的通用R对象,我可以渲染到JSON/XML/HTML等.我查看了helprHadley 的包,但这对我的目的来说似乎有些过分.
我不确定我在这里使用正确的术语,但是当从常规字符集中转出字节时,我需要print或者deparse使用C表示法(例如"\x05"代替"\005").
x <- "This is a \x05 symbol"
print(x)
[1] "This is a \005 symbol"
是否有本地方法来实现这一目标?
我需要这个来生成BSON:http://bsonspec.org/#/specification.所有示例都明确使用\x05符号.
与此问题相关,但略有不同,希望更清楚.
我正在寻找一种干净的方式来正式注册S4和S3类的方法,但不依赖于可怕的S3-dot-naming-scheme进行调度.一个例子:
setClass("foo");
setClass("bar");
setGeneric("test", function(x, ...){
    standardGeneric("test");
});
setMethod("test", "bar", function(x, ...){
    return("success (bar).");
});
obj1 <- 123;
class(obj1) <- "bar";
test(obj1);
这个例子展示了我们如何test为类的S3对象注册一个方法bar,而不需要命名该函数test.bar,这很好.但是,限制是如果我们以这种方式注册方法,它们将仅被分派到对象的第一个S3类.例如:
obj2 <- 123;
class(obj2) <- c("foo", "bar");
test(obj2);
这不起作用,因为S4方法调度只会尝试类foo及其超类.如何扩展此示例,test以便bar在找不到合适的方法时自动选择方法foo?例如S3风格调度,但无需返回命名一切test.foo和test.bar?
总结一下:如何创建一个使用形式方法调度的泛型函数,但另外还要回到具有多个类的S3对象的对象的第二,第三等类.
对于我编写的代码,我倾向于明确而非隐含.因此,在设法创建自己的软件包之后,我立即想到的另一件事是如何最好地确保代码的健壮性和可靠性.部分原因与我的包依赖的包有关.
在这方面:是否可以明确说明需要/期望哪个版本的包依赖?
我正在寻找不需要说明文件的实际路径的zip方法(当然这很容易就可以实现),但只是利用仅install.packages标明包名称的"标准行为" (可能还有一些)参考所需的版本).
我已经检查了写R扩展,看看我的选项是关于文件的Depends部分DESCRIPTION,希望有一个类似的机制,用于说明所需的R版本(例如R (>= 2.15.2)).但我没有发现任何类似的包依赖:
"Depends"字段提供了此包所依赖的包名称的逗号分隔列表.包名称后面可以选择括号中的注释.注释应包含比较运算符,空格和有效的版本号.
在例如,如果软件只为R版本2.11.0或更高版本,包括"R(> = 2.11.0)" - 你也可以使用特殊的包名"R"如果你的包依赖于一定的R版本'取决于'字段.您也可以要求对R-devel的或R-修补,例如某些SVN版本 'R(> = 2.14.0),R(> = r56550)' 需要一个版本晚于2011年7月下旬(的R-devel的包括发布版本2.14.0).这两个库,将R包检查设施使用这个字段:因此它是用语法不当或滥用"Depends中"字段,可能需要对其他软件的意见错误.其他依赖项(R系统外部)应列在"SystemRequirements"字段中,可能在单独的README文件中放大.
将R INSTALL设施检查如果R所使用的版本是软件包足够最近正在安装,并指定将附加软件包当前包之前(检查版本要求后)的名单,无论是在图书馆被称为和准备时在安装过程中进行延迟加载.
然后我也看了一眼,install.packages并希望像version争论一样,但我想没有.
我非常清楚,我的问题的目标可能对比度通过地方(至少我猜)CRAN包库某些包的新版本只是"否决"以前的和分发和安装软件包讨论R的理念install.packages()总是拿起最新的一个可用.从最终用户隐藏版本特性以避免使事情变得过于复杂也很有意义.
然而,关于尽可能编写强大代码的目标,恕我直言,非常明确地陈述事物也是有意义的.或者至少可以选择这样做.
我知道R中有包可以有效地存储稀疏矩阵.还有一种方法可以有效地存储低秩矩阵吗?例如:
A <- matrix(rnorm(1e6), nrow=1e5, ncol=1e1)
B <- A %*% t(A)
现在,B太大而不能存储在内存中,但它的级别很低.有没有什么办法来构建和存储B以高效的方式,这样一些基本的读取方法(rowSums,colSums等)都是在飞行中进行,以便为CPU或内存交易?
从R中查找OS临时目录的跨平台方法是什么?我目前使用:
dirname(tempdir())
在交互式R会话中,Ubuntu和Windows上的工作都做了.然而,当从RApache内部调用时它失败了.在RApache中,值tempdir()始终是/tmp,因此dirname(tempdir())导致/,这显然是错误的.我也尝试过:
Sys.getenv("TMP")
Sys.getenv("TEMP")
Sys.getenv("TMPDIR")
正如所建议的那样,?"environment variables"但这些都没有在Ubuntu中设置.它似乎也没有在任何文件中设置,/etc/R/*所以我不太明白R如何检测到这个值.
我正在多个工作站(主要是Linux)上进行数据分析,我想在所有平台上维护相同的已安装软件包.我使用以下代码来同步与Dropbox结合使用的软件包:
rm(list=ls())
oldip <- read.csv("/home/USER/Dropbox/System/R/oldip.csv")
oldip<-as.character(oldip$x)
installed<-as.character(installed.packages()[,1])
symdiff <- function( x, y) { setdiff( union(x, y), intersect(x, y))}
for(i in symdiff(oldip, installed))  
     install.packages(i,repos="http://cran.at.r-project.org/" ) 
update.packages(checkBuilt = TRUE, ask = FALSE, repos="http://cran.at.r-project.org/")
rm(i);rm(installed)
oldip<-c(installed.packages()[,1])
write.csv(oldip, "/home/USER/Dropbox/System/R/oldip.csv")
可以出问题并弄乱我的R装置吗?我应该避免使用这种方法"盲"和"自动"更新一些软件包吗?
转到链接:
https://cran.r-project.org/web/packages/epicalc/index.html
您将获得以下消息:
Package ‘epicalc’ was removed from the CRAN repository.
Formerly available versions can be obtained from the archive.
Archived on 2015-05-12 as requested by the maintainer <cvirasak@medicine.psu.ac.th>.
但没有给出进一步的解释.这似乎是一个发展良好且有用的软件包,为什么它被删除了?
我正在向CRAN提交一份包裹,我收到了审核小组的以下警告:
包具有VignetteBuilder字段,但没有预先构建的晕影索引.
事实上我在跑步时也看到过devtools::release().我正在使用上一个R版本,R version 3.3.1并具有以下.Rmd插图来源:
---
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{<my vignette title>} 
  %\VignetteEngine{knitr::knitr}
  %\usepackage[utf8]{inputenc}
--- 
此外,我已按默认方式包含knitr在DESCRIPTION文件中:
Suggests:
    knitr
VignetteBuilder:
    knitr
我环顾四周,虽然问题似乎很常见,但我还是无法理解索引为什么不构建(以及如何强制构建它).
这个问题和其中的链接是谷歌的顶级结果,但没有解决问题.
在我的包上,R CMD CHECK 返回一条关于 DECRIPTION 中可能拼写错误的单词的注释:
\n\n* checking CRAN incoming feasibility ... NOTE \n> Possibly mis-spelled words in DESCRIPTION: \n> Laverny (10:602) \n> Rulli\xc3\xa8re (10:641)\n这两个词是我引用的一篇论文中的作者姓名,描述字段如下:
\n\nDescription: Provides S4 classes and methods to fit several copula models: The classic empirical checkerboard copula and the empirical checkerboard copula with known margins, see Cuberos, Masiello and Maume-Deschamps (2019) <doi:10.1080/03610926.2019.1586936> are proposed. These two models allow to fit copulas in high dimension with a small number of observations, and they …