在最近开发包的努力中,我将数据集包含在data/我的包的文件夹中.在我的具体情况下,我有5个数据集,所有这些数据集都是data.table格式化的(尽管如果我保留它们,下面描述的问题仍然存在data.frame).我已将每个.rda文件保存为单个文件并进行适当记录.
当我check()从包运行时devtools,我收到以下警告:
checking data for ASCII and uncompressed saves ... WARNING
Warning: large data file(s) saved inefficiently:
size ASCII compress
data1.rda 129Kb TRUE gzip
data2.rda 101Kb TRUE gzip
data3.rda 1.6Mb TRUE gzip
Note: significantly better compression could be obtained
by using R CMD build --resave-data
old_size new_size compress
data1.rda 129Kb 34Kb xz
data2.rda 101Kb 20Kb xz
data4.rda 92Kb 35Kb xz
data3.rda 1.6Mb 116Kb xz
species.rda 12Kb 9Kb xz …Run Code Online (Sandbox Code Playgroud) 我有一个我在RStudio中构建的R包,让我们称它为my_pkg.当我devtools::load_all(".")在RStudio中运行时(特别是使用Ctrl + Shift + L快捷方式),我收到以下消息:
Loading my_pkg
Warning messages:
1: character(0)
2: character(0)
3: character(0)
4: character(0)
5: character(0)
Run Code Online (Sandbox Code Playgroud)
包中的所有功能都可以正常工作.我NAMESPACE和DESCRIPTION文件已完成,没有语法错误.?my_pkg但是,当我运行时,帮助文件与文件中提供的规范不匹配DESCRIPTION.当我删除Importsfrom时DESCRIPTION,没有更多的character(0)警告信息.当然,我需要那些进口.当我改为Imports时Suggests,会有character(0)警告信息.
这是描述文件内容,更改了一些内容以保护IP.
Package: scoutdroid
Title: This is where the title is.
Version: 0.1
Authors@R: "Ben Hanowell <benjamin.hanowell@redfin.com> [aut, cre]"
Description: This is where the description is.
Depends:
R (>= 3.1.0)
Imports:
dplyr,
lubridate,
mboost,
randomForestSRC, …Run Code Online (Sandbox Code Playgroud) 从Writing R Extensions手册中,我读到了这一点
从R 2.14.0开始,Sweave源的首选位置是源包的子目录vignettes,但为了与早期版本的R兼容,如果不存在vignet,则将在inst/doc中查找晕图源.
但是,当我创建vignettes包源的子目录时,当我运行devtools::check()或者R CMD check我收到警告时Package vignette(s) without corresponding PDF.如果我把小插图(.Rnw和.pdf)放入inst/doc检查完成而没有投诉.我尝试在我的库中查找已安装的打包,但没有看到任何名为的目录vignettes.我还应该使用已弃用的位置吗?
我尝试hyperSpec使用Windows Vista 构建R包.当我这样做时,我收到以下错误消息:
warning in file.copy(pkgname, Tdir, recursive = TRUE)
Problem copying .\hyperSpec\data\barbiturates.rda to C:\Users\JenZIG\AppData\Local\Temp\RtmpOEIqBD\Rbuilde446d3a290d\hyperSpec\data\barbiturates.rda: Permission denied
Run Code Online (Sandbox Code Playgroud)
无论我使用命令行R CMD build还是R Studio的Build Tools(安装了RTools,安装了所有软件包依赖项),都是一样的.
为了解决这个问题,我尝试更改临时目录的路径或手动设置文件夹的权限但没有成功.我试图以管理员身份执行所有操作,但再次没有成功.
我想,这里讨论了类似的问题:
https://stat.ethz.ch/pipermail/r-devel/2013-April/066389.html
但是,没有为此问题提供解决方案.
另外,当我尝试使用Win7构建软件包时,我遇到了同样的问题.
我正在编写一个我一直使用的函数包,其中一个基本上是一个简短的包装器setdiff:
"%\\%" <- function(A, B) setdiff(A, B)
Run Code Online (Sandbox Code Playgroud)
所以1:6 %\% 4:6 == 1:3.
记录这似乎是一场斗争.以下是我的my_package-infix.Rd文件的相关部分,它们引发了一些问题:
\alias{\%\\\%}
\usage{A \%\\\% B}
Run Code Online (Sandbox Code Playgroud)
当我跑步时,R CMD check my_package_0.1.0.tar.gz我收到警告:
* checking for code/documentation mismatches ... WARNING
Functions or methods with usage in documentation object
'my_package-infix' but not in code:
%<unescaped bksl>%
* checking Rd \usage sections ... WARNING
Objects in \usage without \alias in documentation object
'my_package-infix':
‘%<unescaped bksl>%’
Run Code Online (Sandbox Code Playgroud)
可能这意味着我需要更多的逃避,我试图调整这些线:
\alias{\%\\\\\%}
\usage{A \%\\\\\% B}
Run Code Online (Sandbox Code Playgroud)
但令人沮丧的警告是:
* checking for code/documentation mismatches …Run Code Online (Sandbox Code Playgroud) 我有一个名为ggstatsplot( https://indrajeetpatil.github.io/ggstatsplot/ )的 R 包,它依赖于一组S3相互共享一些方法的包。因此,每次加载包时,用户都会收到有关此问题的消息,这对大多数用户没有用。
> library(ggstatsplot)
Registered S3 method overwritten by 'broom.mixed':
method from
tidy.gamlss broom
Registered S3 methods overwritten by 'car':
method from
influence.merMod lme4
cooks.distance.influence.merMod lme4
dfbeta.influence.merMod lme4
dfbetas.influence.merMod lme4
Run Code Online (Sandbox Code Playgroud)
有什么我可以在包内部实现的东西,以避免这些消息被打印到用户的控制台?也许有什么用.onAttach?
我喜欢让我的 R 包保持最新,并且在开发我自己的包时,我想坚持 @Hadley\ 的建议:
\n\n\n\n\n一般来说,指定版本并保守地选择需要哪个版本总是更好。除非您另有所知,否则始终要求版本大于或等于您当前使用的\xe2\x80\x99 版本。
\n
所以,我需要其中一些DESCRIPTION:
Imports:\n knitr (>= 1.13),\n rmarkdown (>= 1.0)\nRun Code Online (Sandbox Code Playgroud)\n\n是否有现有工具可以根据我当前安装的软件包以编程方式更新依赖项的版本?
\n\n我知道这是一件小事,我可以手动完成,但我只知道这是一种很容易忘记的事情。
\n\n使用包的本地安装版本作为最小依赖项似乎也有意义,因为我使用这些依赖项进行了测试/构建。
\n\n我有理由不应该这样做吗?
\n我正在使用pkgdown包为R包生成优雅和静态的手册页(称为RTCGA).当我运行代码以生成静态文档作为网站时,我使用以下命令
> pkgdown::build_site()
Initialising site -------------------------------------------------------------------------------------
Copying '/home/mkosinski/R/x86_64-pc-linux-gnu-library/3.3/pkgdown/assets/jquery.sticky-kit.min.js'
Copying '/home/mkosinski/R/x86_64-pc-linux-gnu-library/3.3/pkgdown/assets/link.svg'
Copying '/home/mkosinski/R/x86_64-pc-linux-gnu-library/3.3/pkgdown/assets/pkgdown.css'
Copying '/home/mkosinski/R/x86_64-pc-linux-gnu-library/3.3/pkgdown/assets/pkgdown.js'
Building home -----------------------------------------------------------------------------------------
Writing '/home/mkosinski/GitHub/RTCGA/docs/index.html'
Building function reference ---------------------------------------------------------------------------
Loading RTCGA
Welcome to the RTCGA (version: 1.5.1).
trying URL 'http://gdac.broadinstitute.org/runs/stddata__2015_11_01/data/ACC/20151101/gdac.broadinstitute.org_ACC.Merge_mirnaseq__illuminahiseq_mirnaseq__bcgsc_ca__Level_3__miR_gene_expression__data.Level_3.2015110100.0.0.tar.gz'
Content type 'unknown' length 309876 bytes (302 KB)
==================================================
downloaded 302 KB
Warning: Topics missing from index: RTCGA-package, theme_RTCGA
Building articles -------------------------------------------------------------------------------------
Building article 'RTCGA_Workflow.html'
Building article 'Web_Applications.html'
Run Code Online (Sandbox Code Playgroud)
此代码在RTCGA包项目的根目录中进行评估,并提供已加载RTCGA并创建文档的信息.
但我在大多数页面的文档中发现了一个错误 - 有一个错误告诉
错误:无法找到'RTCGA.rnaseq'所需的包'RTCGA'
所以没有一个例子可以运行.此外,当我library(RTCGA.rnaseq)使用后运行时,我build_site无法再加载依赖RTCGA包
> library(RTCGA) …Run Code Online (Sandbox Code Playgroud) 来自蟒蛇pip install -h:
-e, --editable <path/url> Install a project in editable mode (i.e. setuptools
"develop mode") from a local project path or a VCS url.
Run Code Online (Sandbox Code Playgroud)
基本上,如果你pip install -e <package_dir>,pip 将安装一个 python 包,并符号链接到该包,而不是复制它的内容。这非常有用,因为这意味着您可以编辑软件包,并且更改立即可用,而无需在每次修改后重新安装软件包。
R 包有等效的吗?这对于包开发非常有用。
如何使用自定义方法$table->myMethod()扩展Laravel 5.5/5.6 MySQL Blueprint,如预构建方法$table->timestamps(); ?
我用 SQLlite 试过一个例子:Extending Blueprint for SQLite in Laravel 5
但我无法让它工作。我正在开发我自己的包(使用包开发最佳实践)并希望从那里包含 Blueprint 扩展。
我开发的包有 Laravel 扩展文件夹“扩展”:./packages/vendorname/packagename/src/ Extension /
有文件:
1) ./packages/vendorname/packagename/src/Extension/Blueprint.php
<?php
namespace Vendorname\Packagename\Extension;
use Illuminate\Database\Schema\Blueprint as ParentBlueprint;
use Illuminate\Support\Facades\DB;
class Blueprint extends ParentBlueprint
{
public function myMethod()
{
$this->text('custom_column')->default('Some value');
$this->text('custom_column2')->default('Some value2');
}
}
Run Code Online (Sandbox Code Playgroud)
2) ./packages/vendorname/packagename/src/Extension/MySqlConnection.php
<?php
namespace Vendorname\Packagename\Extension;
use Vendorname\Packagename\Extension\Blueprint;
use Illuminate\Database\MySqlConnection as ParentMySqlConnection;
use Illuminate\Database\Schema\MySqlBuilder;
class MySqlConnection extends ParentMySqlConnection
{
public function getSchemaBuilder()
{
if (is_null($this->schemaGrammar)) …Run Code Online (Sandbox Code Playgroud)