我目前正在将一篇JSS文章转换knitr为一个R 包小插图.但是,我对插图的位置,结构和我应该如何处理所需的非常长的计算时间有疑问,这在普通笔记本电脑上需要大约2天.
在官方文件提供几乎对此没有任何信息.邮件列表中的答案中的简短注释是我在搜索时找到的唯一信息.Brian Ripley在这里写道:
特别是,CRAN确实接受带有Sweave小插图的包裹,这些小插曲需要很长时间才能检查 - 一个需要大约8个小时[...].我们只是要求在提交时告知我们.
哈德利威克姆对小插曲的描述说eval = FALSE是一个大块的选择.但是,在我的情况下,这不是一种可行的方法,因为需要从计算中生成数据.
此演示文稿表明,/inst/doc将用于预编译和重型小插曲.但是,这与使用/vignettes包装晕影的新指南(或什么?)不太一致.
目前,我已经放置了我的源文件,/vignettes并且我创建了一个.RData文件,其中包含计算量最大的对象(并且也非常大).然后脚本检查对象是否可通过该.RData文件获得,如果没有,则创建对象.因此,从头开始完全编译和运行,.RData可以简单地删除该文件.
有没有人对这个问题有一些经验或指示?小插图应该在/vignettes或/inst/doc?如果是前者是首选,我在哪里放置所需的文件,如.bib,.RData等?我必须承认我发现/vignettesvs /inst/doc有些令人困惑.
是否有可能获得语法
foo$bar(x) <- value
Run Code Online (Sandbox Code Playgroud)
工作在哪里foo是一个引用类对象,bar是一个方法?即是可以做"子集分配"并将"替换函数"作为参考类中的方法吗?
是否可以使用其他OO系统获得语法?
示例:
我将用一个用例说明.想象一个引用类,Person它包含一个人的一些基本信息.特别是,一个叫做的字段fullname名为list:
PersonRCGen <- setRefClass("Person",
fields = list(
fullname = "list",
gender = "character"
))
Run Code Online (Sandbox Code Playgroud)
接下来,我们应该定义一些方法来获取和设置fullnames列表中的特定名称(尝试)给出上面的语法/接口.到目前为止,我最好的尝试是:
PersonRCGen$methods(
name = function(x) { # x is the dataset,
.self$fullname[[x]]
},
`name<-` = function(x, value) {
.self$fullname[[x]] <- value
}
)
Run Code Online (Sandbox Code Playgroud)
这里的命名也应该说明我正在尝试做什么.
我们初始化一个新对象:
a_person <- PersonRCGen$new(fullname = list(first = "Jane", last = "Doe"),
gender = "F")
Run Code Online (Sandbox Code Playgroud)
fullname直接访问字段并通过定义的get函数访问名字和姓氏按预期工作:
a_person$fullname
#$`first`
#[1] "Jane"
#
#$last
#[1] …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用来自Brainarray的定制基因水平注释CDF(芯片定义文件)文件,使关于弥漫性大B细胞淋巴瘤的特定基因表达数据集正常化.
不幸的是,RMA归一化表达式矩阵是所有NaNs,我不明白为什么.
数据集(GSE31312)可在GEO网站免费获取,并使用Affymetrix HG-U133 Plus 2.0阵列平台.我正在使用该affy包来执行RMA规范化.
由于问题是特定于数据集的,因此遗憾的是,以下用于重现问题的R代码非常麻烦(2 GB下载,8.8 GB解压缩).
设置工作目录.
setwd("~/Desktop/GEO")
Run Code Online (Sandbox Code Playgroud)
加载所需的包.取消注释以安装软件包.
#source("http://bioconductor.org/biocLite.R")
#biocLite(pkgs = c("GEOquery", "affy", "AnnotationDbi", "R.utils"))
library("GEOquery") # To automatically download the data
library("affy")
library("R.utils") # For file handling
Run Code Online (Sandbox Code Playgroud)
将阵列数据下载到工作目录.
files <- getGEOSuppFiles("GSE31312")
Run Code Online (Sandbox Code Playgroud)
解压缩名为CEL的目录中的数据
#Sys.setenv(TAR = '/usr/bin/tar') # For (some) OS X uncommment this line
untar(tarfile = "GSE31312/GSE31312_RAW.tar", exdir = "CEL")
Run Code Online (Sandbox Code Playgroud)
解压缩所有.gz文件
gz.files <- list.files("CEL", pattern = "\\.gz$",
ignore.case = TRUE, full.names = TRUE)
for (file in …Run Code Online (Sandbox Code Playgroud) 我使用点函数来格式化创建的图中的文本标签ggplot2.这在使用时工作正常aes,但在使用时不能像预期的那样工作aes_string.是否有解决方法使其适用aes_string?
require(ggplot2)
# Define the format function
dot <- function(x, ...) {
format(x, ..., big.mark = ".", scientific = FALSE, trim = TRUE)
}
# Create dummy data
df <- data.frame(cbind(levels(iris$Species),c(10000000000,200000,30000)))
df$X2 <- as.numeric(as.character(df$X2))
# Works with aes
ggplot(iris) +
geom_bar(aes(Species,Sepal.Width),stat="identity") +
geom_text(data=df,aes(x=factor(X1),y=180,label=dot(X2)))
# Doesn't work with aes_string
ggplot(iris) +
geom_bar(aes(Species,Sepal.Width),stat="identity") +
geom_text(data=df,aes_string(x="X1",y=180,label=dot("X2")))
Run Code Online (Sandbox Code Playgroud) 我有一个问题,我无法使用在Rstudio git审阅更改中选择特定行时出现的“阶段行/选择”和“放弃行/选择”按钮。按下时,选择消失,什么也没有发生。
为了说明这一点,假设我有一个文件,其中进行了一些添加和删除:
请注意,右侧的“阶段数据块”和“丢弃数据块”按钮将按预期工作。
现在,假设我希望仅暂存并提交添加的行(代码注释)。我首先选择以下行:
但是,选择两个按钮中的任何一个,都会保留选择的第一行,并且不会暂存任何内容:
同样,如果为剩下的单行选择按下“阶段组块”或“丢弃组块”,则什么也不会发生。
这个问题似乎有点断断续续。我的经验是,如果我进行了许多“复杂”的更改,这种情况经常发生。编辑几行不会导致此问题。通过搜索,我仅找到建议避免在文件中留空格(我没有)。
您好,并提前致谢.我正在使用caret从nnet包中交叉验证神经网络.在函数的method参数中,trainControl我可以指定交叉验证类型,但所有这些都随机选择观察结果以进行交叉验证.无论如何,我可以使用插入符号通过ID或硬编码参数来交叉验证我的数据中的特定观察结果吗?例如,这是我当前的代码:
library(nnet)
library(caret)
library(datasets)
data(iris)
train.control <- trainControl(
method = "repeatedcv"
, number = 4
, repeats = 10
, verboseIter = T
, returnData = T
, savePredictions = T
)
tune.grid <- expand.grid(
size = c(2,4,6,8)
,decay = 2^(-3:1)
)
nnet.train <- train(
x = iris[,1:4]
, y = iris[,5]
, method = "nnet"
, preProcess = c("center","scale")
, metric = "Accuracy"
, trControl = train.control
, tuneGrid = tune.grid …Run Code Online (Sandbox Code Playgroud)