我正在Travis上构建一个R包,以便与包的用户分享集成状态.我没有错误,只有8个警告,我想暂时忽略它们.但travis认为构建失败并返回消息:
Found warnings, treating as errors (as requested)
Run Code Online (Sandbox Code Playgroud)
如何忽略警告?
我是github上的一个包的作者.我的同事安装了这个软件包devtools::install_github().他们想测试包是否已更新.是否有一个函数来检查是否已经提交了github主分支,因为它们上次安装了包?
使用dplyr的动词时,非标准评估非常方便.但是当使用带有函数参数的动词时,它可能会有问题.例如,让我们说我想创建一个函数,它给出了给定物种的行数.
# Load packages and prepare data
library(dplyr)
library(lazyeval)
# I prefer lowercase column names
names(iris) <- tolower(names(iris))
# Number of rows for all species
nrow(iris)
# [1] 150
Run Code Online (Sandbox Code Playgroud)
此函数无法按预期工作,因为species
它在iris数据框的上下文中进行解释,而不是在函数参数的上下文中进行解释:
nrowspecies0 <- function(dtf, species){
dtf %>%
filter(species == species) %>%
nrow()
}
nrowspecies0(iris, species = "versicolor")
# [1] 150
Run Code Online (Sandbox Code Playgroud)
要解决非标准评估问题,我通常会使用下划线附加参数:
nrowspecies1 <- function(dtf, species_){
dtf %>%
filter(species == species_) %>%
nrow()
}
nrowspecies1(iris, species_ = "versicolor")
# [1] 50
# Because of function name completion the …Run Code Online (Sandbox Code Playgroud) tidyr::unnestR 语言中的方法与 Pandas 中的等效方法相同explode,如此非常详细的答案中所述。我想知道是否有等效于 ?tidyr::nest` 的方法。
示例 R 代码:
library(tidyr)
iris_nested <- as_tibble(iris) %>% nest(data=-Species)
Run Code Online (Sandbox Code Playgroud)
数据列是一个列表列,其中包含数据框(这对于建模非常有用,例如在运行多个模型时)。
iris_nested
# A tibble: 3 x 2
Species data
<fct> <list<df[,4]>>
1 setosa [50 × 4]
2 versicolor [50 × 4]
3 virginica [50 × 4]
Run Code Online (Sandbox Code Playgroud)
要访问数据列中的一个元素:
iris_nested[1,'data'][[1]]
[...]
# A tibble: 50 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 …Run Code Online (Sandbox Code Playgroud) https://pypi.org/project/openai/
“该库需要使用您帐户的密钥进行配置,该密钥可在 网站上找到。[...]将其设置为 OPENAI_API_KEY 环境变量”
当我要求 Chat GPT 完成消息时
import openai
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "What are the trade-offs around deadwood in forests?"}]
)
print(response)
Run Code Online (Sandbox Code Playgroud)
我得到一个RateLimitError: You exceeded your current quota, please check your plan and billing details.
有没有一个Python方法来检查密钥是否有效?
In [35]: openai.api_key
Out[35]: 'sk-...'
Run Code Online (Sandbox Code Playgroud) 在当前版本的dplyr中,select参数可以通过值传递:
variable <- "Species"
iris %>%
select(variable)
# Species
#1 setosa
#2 setosa
#3 setosa
#4 setosa
#5 setosa
#6 setosa
#...
Run Code Online (Sandbox Code Playgroud)
但是group_by参数不能通过值传递:
iris %>%
group_by(variable) %>%
summarise(Petal.Length = mean(Petal.Length))
# Error in grouped_df_impl(data, unname(vars), drop) :
# Column `variable` is unknown
Run Code Online (Sandbox Code Playgroud)
iris %>% select(Species)
Run Code Online (Sandbox Code Playgroud)
iris %>%
group_by(Species) %>%
summarise(Petal.Length = mean(Petal.Length))
Run Code Online (Sandbox Code Playgroud)
select和group_by对于不同的,以按值传递参数呢?select通话有效,将来会继续使用吗?group_by电话不起作用?我想弄清楚的什么样的组合quo(),enquo()和 …我希望R脚本具有在交互模式下执行的main()函数.但是在获取文件时不应执行main()函数.
已经有一个关于这个的问题,一个非常好的答案建议使用interactive()函数.然而,这对我不起作用.我没有足够的声誉点来评论或回答这个问题.所以我再次问这个问题.
我写这个 script_1.r
if(interactive()){
your main code here
}
Run Code Online (Sandbox Code Playgroud)
如果我使用knitr来放弃html或pdf文档,那就是获取脚本.此代码if(interactive())不会被执行.这对我有好处,这就是我想要的.
我的问题是,如果我source("script_1.r")从script_2.r交互模式,它仍将运行此if(interactive())部分下的代码.
我在项目文件夹中工作,让我们说它的绝对路径是:/project.getwd()告诉我,我在这个项目文件夹中.我的所有文件读取和写入都与此项目根相关./project有一个子文件夹/project/docs/其中有一个R Mardown文件和一个R脚本:
report.Rmd 包含:
```{r }
plot(cars)
```
Run Code Online (Sandbox Code Playgroud)
并knit_reports.R包含:
library(knitr)
knit2html("./docs/report.Rmd", "./docs/report.html")
Run Code Online (Sandbox Code Playgroud)
如果我运行knit_reports.R,会生成一个html页面,但页面上不会显示数字.
问题是数字存储在/project/figures.对于html文档生成,它们不可见.我正在寻找一种方法告诉knitr存储图片/project/docs/figures.
设置knitr选项root.dir或base.dir in report.Rmd不能解决问题,我试过opts_knit$set(root.dir = "./docs")或opts_knit$set(base.dir = "/project/docs").
但是,如果我将工作目录更改为/project/docs:
setwd("./docs/")
knit2html("report.Rmd", "report.html")
Run Code Online (Sandbox Code Playgroud)
将/project/docs/figure创建一个文件夹,并在html页面上显示图形.
许多人说在脚本中使用setwd()是不好的,因为它会弄乱可重复性.如何在不使用setwd()的情况下告诉knitr将数字放在我的项目子文件夹中?
使用docker stack deploy,我可以看到以下消息:
Ignoring unsupported options: restart
Run Code Online (Sandbox Code Playgroud)
例如,您可以在该页面底部使用Joomla撰写文件查看此消息 .要启动撰写文件:
sudo docker swarm init
sudo docker stack deploy -c stackjoomla.yml joomla
Run Code Online (Sandbox Code Playgroud) 我想使用 Gitlab CI 来编译一篇 Latex 文章,如tex.stackexchange 上的这个答案中所述(类似的 pdf 生成示例在artifacts的gitlab 文档中显示)。我使用了期刊编辑提供的特殊乳胶模板。我的 Latex 文章包含使用 R 统计软件制作的数字。R 和 Latex 是两个具有很多依赖项的大型软件安装,因此我决定使用两个单独的容器进行构建,一个用于使用 R 进行统计分析和可视化,另一个用于将 Latex 文档编译为 pdf。
以下是内容.gitlab-ci.yml:
knit_rnw_to_tex:
image: rocker/verse:4.0.0
script:
- Rscript -e "knitr::knit('article.Rnw')"
artifacts:
paths:
- figure/
compile_pdf:
image: aergus/latex
script:
- ls figure
- latexmk -pdf -bibtex -use-make article.tex
artifacts:
paths:
- article.pdf
Run Code Online (Sandbox Code Playgroud)
knit_rnw_to_tex在 R "rocker" 容器中执行的作业成功,我可以从 gitlab "jobs" 页面下载图形工件。第二份工作的问题compile_pdf是ls figure向我显示了一个空文件夹,并且由于缺少数字,Latex 文章编译失败。