我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/vignettes而knitr::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) 我正在尝试创建一个用于创建棒棒糖图的函数ggplot2。我想将所有参数传递...到aes()inside geom_point()。但是,我想排除size传递到aes()内部的参数geom_segment()(如果您查看a()下面的输出,原因很明显)。因此,我捕获...usingrlang::enquos()而不是按原样传递它。在功能上a(),我传递dots到aes()内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) 正如在此站点上所解释的那样,可以在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) 假设我有一个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字段name和hair …
有没有办法随时间检索有关 GitHub 存储库星数的信息?我知道我可以获取使用stargazersAPI 端点为存储库加星标的所有用户的列表。但是,这不包括有关每个用户何时为 repo 加注星标的信息。关于如何检索这些数据的任何提示?
我想反转水平条形图图例的顺序。添加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)
假设我有三个数据框的列表
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.任何帮助,将不胜感激.非常感谢你!