小编Tom*_*mmy的帖子

使用opts_chunk $ set(root.dir = ...)在knitr中设置工作目录不起作用

我R项目的结构类似于目录包/R,/vignettes,/data等.在我的文档RMD中的一个/vignettes我来源,在位于脚本/R.在这个脚本里面我read.csv()用来加载一个位于的文件inst/extdata/.
现在的问题是,默认情况下,Rmd文件中的工作目录是文件所在的目录.我们称之为/Users/Me/Docs/Proj/vignettes.但是为了让R脚本运行工作目录,需要成为项目的主目录(/Users/Me/Docs/Proj).
我尝试使用更改Rmd文件中的工作目录knitr::opts_chunk$set(root.dir = normalizePath("..").但显然这并没有改变工作目录,因为如果我把getwd()它后输出仍/Users/Me/Docs/Proj/vignettesknitr::chunk_opts$get("root_dir")回报/Users/Me/Docs/Proj.

这是一个最小的示例Rmd文件:

```{r}
getwd()  # returns 'Users/Me/Docs/Proj/vignettes'
knitr::opts_chunk$set(root.dir = normalizePath(".."))  # should change the working directory to 'Users/Me/Docs/Proj'
getwd()  # again returns 'Users/Me/Docs/Proj/vignettes'
knitr::opts_chunk$get("root.dir")  # returns 'Users/Me/Docs/Proj'
```
Run Code Online (Sandbox Code Playgroud)

我使用的是RStudio版本0.99.435.这是我的会议信息:

R version 3.2.0 (2015-04-16)  
Platform: x86_64-apple-darwin14.3.0 (64-bit)  
Running under: OS X 10.10.3 (Yosemite)  

locale:
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8

attached …
Run Code Online (Sandbox Code Playgroud)

r rstudio knitr

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

'不能在顶层使用`!!!` 是什么意思。是什么意思以及如何解决?

我正在尝试创建一个用于创建棒棒糖图的函数ggplot2。我想将所有参数传递...aes()inside geom_point()。但是,我想排除size传递到aes()内部参数geom_segment()(如果您查看a()下面的输出,原因很明显)。因此,我捕获...usingrlang::enquos()而不是按原样传递它。在功能上a(),我传递dotsaes()ggplot()这个作品没有问题。但在功能上b()我得到了错误Can't use '!!!' at top level.

我被困在这一点上,并感谢任何输入来解决这个问题。

library(ggplot2)
data("mtcars")

d <- dplyr::count(mtcars, cyl, am)

a <- function(data, x, y, ...) {
  x <- rlang::enquo(x)
  y <- rlang::enquo(y)
  dots <- rlang::enquos(...)

  ggplot(data, aes(!!x, !!y, !!!dots)) +
    geom_segment(aes(y = 0, xend = !!x, yend = !!y)) +
    geom_point() …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 non-standard-evaluation tidyverse rlang

12
推荐指数
1
解决办法
1447
查看次数

无法更改Rmd文档中的参数

正如在此站点上所解释的那样,可以在Rmarkdown文件的YAML头中定义参数,并且可以覆盖其中指定的默认值rmarkdown::render("foo.Rmd", params = list(param1 = "bar").但是,当我尝试这个时,我收到以下错误:

params对象已存在于编织环境中,因此不能被渲染参数覆盖

这是一个可重复性最小的Rmd文档.假设文件名是test.Rmd.

---
title: "Test"
output: pdf_document
params:
  name: Andreas
---

Hello, my name is `r params$name`.
Run Code Online (Sandbox Code Playgroud)

当我现在尝试rmarkdown::render("test.Rmd", params = list(name = "Jordan")它停止与上面写的错误.

这是我的sessionInfo():

R version 3.2.1 (2015-06-18)
Platform: x86_64-apple-darwin14.4.0 (64-bit)
Running under: OS X 10.10.4 (Yosemite)

locale:
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.11      rmarkdown_0.7.3

loaded via a namespace (and not attached): …
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown

10
推荐指数
2
解决办法
2351
查看次数

更改R6类的子类中的initialize方法

假设我有一个R6类Person:

library(R6)

Person <- R6Class("Person",
  public = list(name = NA, hair = NA,
                initialize = function(name, hair) {
                  self$name <- name
                  self$hair <- hair
                  self$greet()
                },
                greet = function() {
                  cat("Hello, my name is ", self$name, ".\n", sep = "")
                })
)
Run Code Online (Sandbox Code Playgroud)

如果我想创建一个子类,其initialize方法应该是相同的,除了添加一个变量,self我将如何做到这一点?
我尝试了以下方法:

PersonWithSurname <- R6Class("PersonWithSurname",
  inherit = Person,
  public = list(surname = NA,
                initialize = function(name, surname, hair) {
                  Person$new(name, hair)
                  self$surname <- surname
                })
)
Run Code Online (Sandbox Code Playgroud)

然而,当我创建类的新实例PersonWithSurname字段namehair …

r r6

9
推荐指数
1
解决办法
1396
查看次数

GitHub API:随时间推移存储库的星数

有没有办法随时间检索有关 GitHub 存储库星数的信息?我知道我可以获取使用stargazersAPI 端点为存储库加星标的所有用户的列表。但是,这不包括有关每个用户何时为 repo 加注星标的信息。关于如何检索这些数据的任何提示?

github-api

4
推荐指数
1
解决办法
524
查看次数

使用 ggplotly() 时反转图例顺序

我想反转水平条形图图例的顺序。添加guides(fill = guide_legend(reverse = TRUE))到它时ggplot效果很好(参见第二个图)。但是,应用图例后,ggplotly()图例又恢复为默认顺序。

如何在plotly改变条形顺序的情况下反转图例的顺序?

library(ggplot2)
library(dplyr)
data(mtcars)

p1 <- mtcars %>%
  count(cyl, am) %>%
  mutate(cyl = factor(cyl), am = factor(am)) %>%
  ggplot(aes(cyl, n, fill = am)) +
  geom_col(position = "dodge") +
  coord_flip()
p1
Run Code Online (Sandbox Code Playgroud)


p2 <- p1 + guides(fill = guide_legend(reverse = TRUE))
p2
Run Code Online (Sandbox Code Playgroud)

plotly::ggplotly(p2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2 plotly ggplotly

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

lm在列表的元素上

假设我有三个数据框的列表

set.seed(55)
df1 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6))
df2 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6))
df3 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6))
l <- list(df1, df2, df3)
Run Code Online (Sandbox Code Playgroud)

我现在想用每个数据帧的a和c做一个线性模型.我尝试了以下内容

for(i in l) {
  x <- (lm(l[[i]]$a~l[[i]]$c))
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误

Error in l[[i]] : invalid subscript type 'list'
Run Code Online (Sandbox Code Playgroud)

我想有一个列表,每个元素都是一个l和一个c.任何帮助,将不胜感激.非常感谢你!

r list lm

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