小编jke*_*ead的帖子

将命名参数列表传递给函数?

我想写一个小函数来从适当的发行版生成样本,如:

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)

我猜我在某个地方错过了一个小包装函数,但无法弄明白.

谢谢!

r

46
推荐指数
2
解决办法
2万
查看次数

Knitr无视fig.pos?

我试图在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)

r figure knitr r-markdown

19
推荐指数
2
解决办法
7808
查看次数

str_replace"NA"出现意外行为

我正在尝试将字符串转换为数字,并遇到了一些意外的行为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.0stringi_1.0-1R上3.1.3,Windows 7操作系统.

r stringr stringi

9
推荐指数
2
解决办法
1371
查看次数

在面板外添加ggplot注释?还是两个头衔?

我正在使用ggplot2animation包制作一个动画情节.动画的每一帧都包含一个包含两位信息的地图,我想将其用作标题/标签.

在我看来,有两种方法可以做到这一点.

  1. 调整绘图边距,geom_text使其没有标题边距,然后用于在图上添加"标题"作为文本注释.
  2. 添加第二个标题.(我尝试用空格填充单个标题来模拟两个标题,但由于字距调整,这会因重复绘图而中断.)

第一种方法并不理想,因为我需要为每个帧使用相同的绘图限制,我从以lat/long测量的地图范围中获得这些.确定标签所需的额外高度会导致丑陋的单位混合.因此,添加第二个标题在语义上对我来说似乎更明智,但在玩完之后annotation_custom,我似乎无法弄明白.

这是我所追求的模型,展示了两个"标题",每个标题都有不同的对齐方式,以确保它们在重复的帧中保持不变.我打开了情节边框来帮助想象这个位置.在最终的情节中,这将被删除.

ggplot的模拟有两个标题

谢谢你的帮助!

编辑

感谢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)

这是结果:

ggplot图有两个标题

r ggplot2

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

在R包中加载文本数据

我正在研究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通话之前设置,但这似乎也没有用.数据仍然作为因素加载.

是否有任何包装专家知道如何解决这个问题?加载后我宁愿不必手动将所有内容整理成正确的格式; 它看起来不太优雅.

packages r

6
推荐指数
0
解决办法
156
查看次数

install_extras 不起作用?

我正在编写一个 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 的情况。

r devtools

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

strptime不承认%b /%B?

我试图用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")

r date

2
推荐指数
1
解决办法
649
查看次数

从Python顺序运行命令

我正在尝试使用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()在循环中使用,subprocessmap(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)

python

0
推荐指数
1
解决办法
3266
查看次数

标签 统计

r ×7

date ×1

devtools ×1

figure ×1

ggplot2 ×1

knitr ×1

packages ×1

python ×1

r-markdown ×1

stringi ×1

stringr ×1