我想写一个小函数来从适当的发行版生成样本,如:
makeSample <- function(n,dist,params)
values <- makeSample(100,"unif",list(min=0,max=10))
values <- makeSample(100,"norm",list(mean=0,sd=1))
Run Code Online (Sandbox Code Playgroud)
大多数代码都有效,但是我在确定如何为每个分发传递命名参数时遇到了问题.例如:
params <- list(min=0, max=1)
runif(n=100,min=0,max=1) # works
do.call(runif,list(n=100,min=0,max=1)) # works
do.call(runif,list(n=100,params)) # doesn't work
Run Code Online (Sandbox Code Playgroud)
我猜我在某个地方错过了一个小包装函数,但无法弄明白.
谢谢!
我试图在RMarkdown文档中插入一个数字,但我很难让它出现在正确的位置.下图显示了问题:使用数字标题时,图形显示在页面顶部而不是文档中相关段落的下方.
以下是此最低工作示例的代码:
---
title: "Untitled"
author: "Author"
date: "27 February 2017"
output:
pdf_document:
fig_cap: yes
keep_tex: yes
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.pos= "h")
```
## R Markdown
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
\newpage
## Including Plots
You can also embed plots, for example:
```{r pressure, echo=FALSE, fig.cap = "Hello"}
plot(pressure)
```
Note that …Run Code Online (Sandbox Code Playgroud) 我正在尝试将字符串转换为数字,并遇到了一些意外的行为str_replace.这是一个最小的工作示例:
library(stringr)
x <- c("0", "NULL", "0")
# This works, i.e. 0 NA 0
as.numeric(str_replace(x, "NULL", ""))
# This doesn't, i.e. NA NA NA
as.numeric(str_replace(x, "NULL", NA))
Run Code Online (Sandbox Code Playgroud)
在我看来,第二个例子应该工作,因为它应该只替换向量中的第二个条目NA(它是字符向量中的有效值).但事实并非如此:内部str_replace将所有三个条目转换为NA.
这里发生了什么?我查看了文档str_replace,stri_replace_all但没有看到明显的解释.
编辑:为了澄清,这是stringr_1.0.0和stringi_1.0-1R上3.1.3,Windows 7操作系统.
我正在使用ggplot2和animation包制作一个动画情节.动画的每一帧都包含一个包含两位信息的地图,我想将其用作标题/标签.
在我看来,有两种方法可以做到这一点.
geom_text使其没有标题边距,然后用于在图上添加"标题"作为文本注释. 第一种方法并不理想,因为我需要为每个帧使用相同的绘图限制,我从以lat/long测量的地图范围中获得这些.确定标签所需的额外高度会导致丑陋的单位混合.因此,添加第二个标题在语义上对我来说似乎更明智,但在玩完之后annotation_custom,我似乎无法弄明白.
这是我所追求的模型,展示了两个"标题",每个标题都有不同的对齐方式,以确保它们在重复的帧中保持不变.我打开了情节边框来帮助想象这个位置.在最终的情节中,这将被删除.

谢谢你的帮助!
编辑
感谢Baptiste的签名发布.我不得不使用稍微不同的参数来(a)获得正确的定位和(b)对两个标题使用相同的字体.这是一个例子:
require(gtable)
require(ggplot2)
## Create the basic plot
df <- data.frame(x=1:10, y=1:10)
gg <- ggplot(df, aes(x,y)) + geom_point() + labs(title="Left") +
theme(plot.title=element_text(hjust=0))
## Get the title style from the original plot
g <- ggplotGrob(gg)
title_style <- g$grobs[[8]]$gp
## Add the second title and plot
g2 <- gtable_add_grob(g, textGrob("Right", x=1, hjust=1, gp=title_style),
t=2, l=4, b=2, r=4, name="right-title")
grid.draw(g2)
Run Code Online (Sandbox Code Playgroud)
这是结果:

我正在研究R软件包,并且在尝试加载数据以供内部使用时非常糟糕.
该软件包已设置,LazyData: false数据本身位于目录中名为params.csvfile的文件中data.如果在我的一个函数中,我写了以下内容:
data(params, envir=environment())
Run Code Online (Sandbox Code Playgroud)
然后文件加载,我可以在代码中使用它. 但正如文档中所述,它已经载入read.table(file, sep=";")并且我有字符值,我不想将其视为因素.如果这是一个正常的read.table电话,那么我会添加stringsAsFactors=FALSE,一切都会好的.
该注意的部分?data建议你可以使用的R文件中的数据文件夹手动执行此加载,但我不能弄明白.我试过params.r在数据目录中调用一个文件,如下所示:
read.table("params.csv", sep=";", stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
但是当它加载时,R抱怨read.table找不到该功能.再次,文档说在采购文件之前data以某种方式加载utils,但是当我library(utils)在脚本的开头放置标准调用时,它抱怨utils无法找到.
我甚至尝试options(stringsAsFactors=FALSE)在data通话之前设置,但这似乎也没有用.数据仍然作为因素加载.
是否有任何包装专家知道如何解决这个问题?加载后我宁愿不必手动将所有内容整理成正确的格式; 它看起来不太优雅.
我正在编写一个 R 包并尝试使用编写 R 扩展.install_extras中描述的功能。该文档指出:“要安装 vignettes 目录中的任何其他文件,请包含一个文件 vignettes/.install_extras,该文件将这些文件指定为一行或多行上的类似 Perl 的正则表达式。”
我已经创建了这个文件,它包含以下一行。
myfile.png
Run Code Online (Sandbox Code Playgroud)
png 文件存在于 vignettes 目录中,但是当我使用安装包时devtools::install(),该文件不会复制到安装的 doc/ 文件夹(或开发目录的 inst/doc)。
我已经检查了 Github 上使用此功能的各种软件包(例如Rcppzigguart),据我所知,它应该可以工作。
有任何想法吗?这是 R 3.1.0 的情况。
我试图用strptime转换R中的一些日期.我已经阅读了这个帖子,并设置了我的语言环境,以便它可以工作.例如:
> Sys.getlocale("LC_TIME")
[1] "en_GB"
> format(Sys.time(), format="%B")
[1] "November"
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试转换月份字符串,则strptime返回NA,例如:
> strptime("November", format="%B")
[1] NA
Run Code Online (Sandbox Code Playgroud)
我可以在上面的链接上运行示例,没有任何问题,但如果我简化示例只包括月份,我再次获得NA.
> var <- "Thu Nov 8 15:41:45 2012"
> strptime(var, format="%a %b %d %H:%M:%S %Y")
[1] "2012-11-08 15:41:45 GMT"
> strptime("Nov", format="%b")
[1] NA
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?如何将字符月解析为日期对象?
编辑 感谢您的评论如下.澄清一下,这也行不通:
> strptime("November 2011", format="%B %Y")
[1] NA
Run Code Online (Sandbox Code Playgroud)
我还希望strptime用当前系统时间填写任何缺少的字段,如strptime("2011", format="%Y")
我正在尝试使用Python构建一个LaTeX文档,但是在按顺序运行命令时遇到问题.对于那些熟悉LaTeX的人,你会知道你通常必须运行四个命令,每个命令在运行下一个之前完成,例如
pdflatex file
bibtex file
pdflatex file
pdflatex file
Run Code Online (Sandbox Code Playgroud)
在Python中,我这样做是为了定义命令
commands = ['pdflatex','bibtex','pdflatex','pdflatex']
commands = [(element + ' ' + src_file) for element in commands]
Run Code Online (Sandbox Code Playgroud)
但问题是然后运行它们.
我试图从这个线程中解决问题 - 例如os.system()在循环中使用,subprocess像map(call, commands)或者之类的东西Popen,并将列表折叠到单独的字符串&- 但是看起来这些命令都作为单独的进程运行,而不是等待之前的一个完成.
为了记录,我在Windows上,但想要一个跨平台的解决方案.
编辑
问题是指定src_file变量的错误; 它不应该有".tex".以下代码现在有效:
test.py
import subprocess
commands = ['pdflatex','bibtex','pdflatex','pdflatex']
for command in commands:
subprocess.call((command, 'test'))
Run Code Online (Sandbox Code Playgroud)
test.tex
\documentclass{article}
\usepackage{natbib}
\begin{document}
This is a test \citep{Body2000}.
\bibliographystyle{plainnat}
\bibliography{refs}
\end{document}
Run Code Online (Sandbox Code Playgroud)
refs.bib
@book{Body2000,
author={N.E. Body},
title={Introductory Widgets},
publisher={Widgets International},
year={2000}
}
Run Code Online (Sandbox Code Playgroud)