建立副本名稱沖突_包的建立(一)

bb1b353ff7ce369378bb8bbb521ee19b.png

這次的內容,涉及到 R 語言包的建立。事實上,CRAN 提供的官方參考指南,并不適合快速閱讀,且內容繁雜。比較適合作為后期提高的 教材。而 http://r-pkgs.had.co.nz/ 上 的教程則更適合作為 R 包編寫的幫助指南。這里,僅僅講述整個過程中需要注意的一系列的問題:

021125fffcc3e1c9c3bec58cfe83ccc7.png

目前,我個人只涉及到 Windows 系統,因此本文僅適用于 Windows 系統下,R 包的創建:Rtools 是必須具備的工具,當然這個工具也只適用于 Windows 系統。關于 Rtools 的安裝并沒有過多可強調的內容。需要明確的是:R 語言目前已經進入了 4.0 的時代,對應的也從 Rtools35 過渡到了 Rtools40.目前所有的配置要求必然是:??以及???舊版的 Rtools 需要在安裝時勾選:Add rtools to system PATH,?但新版本并無此操作。仍然需要注意的是:必須安裝在 C 盤的默認路徑下,不能更改安裝路徑!在完成安裝之后,R 語言環境下,運行代碼:
>?Sys.which('make')
??????????????????????????????make?
"C:\\rtools40\\usr\\bin\\make.exe"?
返回上述信息,才能證明 Rtools 配置已完成。需要強調的是:不能修改安裝路徑!且 C 盤文檔下的?.Renviron 不能刪除!除此之外,還需要:設置 R 的 path 環境變量,這一步已經在?《R語言環境配置》一文講過,因此,實在沒有重復的必要性。并且,這篇文章也不是針對零基礎而講的。僅僅只會涉及到重點內容以及各種易錯點。只有環境變量設置成功,后續才能調用 R CMD 進行一系列的操作。至此環境配置已完成,當然,還需要準備:RStudio

acfee62f12a64b146293efcdbadfd8dd.png

R 包的建立,最佳建議方案:在 RStudio 中通過新建項目來完成。法一:File > New Project > New Directory >? R Package ,或者選擇:R Package using devtools法二:
library(devtools)
create_package()
或者選擇 create_package() 直接創建一個包所需要的基本內容。至于 create_package() 如何使用:RTFM基本的路徑設置,絕對路徑,相對文件,文件管理,如何保存到合適的位置,以及 R 語言包的建立,不能直接輸入任何中文字符,這些都屬于基礎入門內容。不是現如今應該重復敘述的內容。從這篇文章開始,今后不會再涉及針對基礎入門的幫助性文章。

需要說明的是:

1/??devtools 包必須使用,導入 devtools 的同時,會默認加載 usethis包

2/??而 roxygen2 則被 RStudio 的操作環境下使用了,并沒有被顯式調用。

3/? 這三個包,構成了 R 包創建的整個工具支持。

整個項目文件夾下包括了:

? ? ?---R

? ? ?---man

?? ? ---NAMESPACE

? ? ?---DESCRIPTION

以及?Rproj?和?LICENSE?

這些部分是包的創建所必須的,但 Data 和 vignette文件夾并不是默認需要的,這一點需要引起重視。

9e3b3df49547a1ea9ad73c512eb90c9b.png

RStudio 界面的些許變化:只有在創建 R 包的項目文件中,Build 菜單欄才會顯示與創建包相關的一系列選項!當然,除了鼠標點擊執行以外,利用?代碼操作,才是最直接了當的方式。

創建之前,需要把工作路徑設置到創建包的路徑下!

一般,第一步通常是修改:DESRITION 文件

Package:?
Title:?
Version:?
Date:?
Authors@R:?
????person(given?=?,
???????????family?=?,
???????????role?=?c("aut",?"cre"),
???????????email?=?)
Author:?[aut,cre]
Depends:?R?(>=?4.0.0)
Description:?
License:?
Imports:?
Encoding:?UTF-8
LazyData:?true
Roxygen:?list(markdown?=?TRUE)
RoxygenNote:?7.1.1

相關的內容,需要個人補齊。這一塊,不再強調。

Imports 內容,涉及到編寫函數時使用到的其他包。必須在 Imports 項中指出,否則建立包時,會產生報錯信息。

這一塊,倒沒有過多需要強調的內容。

d847fdaf89291e978e1a92cb18754005.png

在編寫函數之前,需要確保當前環境下,所有的變量被清空:

rm(list?=?ls())
所有的代碼均位于 R 文件夾下,通過一個個 .R 為后綴名的腳本來記錄。但目前,仍然無法支持 R 文件夾下涉及子目錄,也就意味著,所有的函數都必須通過處于同一級的 R ?的腳本來保存。在編寫函數之前,需要明確:R 包函數分為兩大類:1/? ?支持導出的函數2/? ?僅在包內使用的內部函數創建文件及刪除文件:
edit_file('./R/read.R')
file.remove('R/read.R')

當然設置路徑是包的主路徑,而 R 是子目錄,所以創建 R 腳本是必須添加上子目錄名稱,而不需要時,則通過 file.remove()?刪除路徑。

需要說明的是:file.remove() 操作的文件,將直接被清理,不會進入回收站中,因此需要謹慎對待。

R 文件夾下的腳本名并不一定等于函數名。一個腳本下可以存在多個函數均被導出。

對于導出的函數,需要添加注釋內容。而 R 包的內部函數,則不需要注釋內容。

所有的注釋內容,以?#' 開頭,或者可以選擇:##’ 開頭。

簡單的示例:

#'?@title?
#'?@description?
#'?@param?
#'?@examples
#'?@export
#'?@author
scan.str??function(string){
??return(scan(text?=?string))
}

@ 后面的每一項內容都需要補齊,但?@author, @examples 并不是必須項。

其中,title, description, param, export 則是基礎內容,需要完善,而 param 則是針對函數中參數內容的注釋。

@return?? 用于解釋函數的返回內容

@importFrom?則是至關重要的內容

例如:

#'?@importFrom??utils?read.table

read.txt?function(text,header?=??T,...)?{
??return(read.table(text?=?text,?header?=?header,...))
}

函數中使用到了除 base 包以外的函數,均需要通過?@importFrom 進行指明!

格式為:@importFrom pkgname funtion1 function2 function3 ...

編寫完成,保存后,下面進行自動生成相關信息的操作:

>?rm(list?=?ls())
>?document()
Updating?...?documentation
Loading?...
Writing?NAMESPACE
Writing?NAMESPACE

document() 用于生成相關的內容:完善 NAMESPACE 文件以及 man 文件夾下的 rd 文件,但在此之前,必須保證當前環境不與所創建的包中的函數相沖突。所以建議習慣性執行:rm() 操作。

---end---

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538827.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538827.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538827.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 多選列表

原文&#xff1a;http://blog.csdn.net/wljun739/article/details/37655209 點擊閱讀原文 ----------------------------------------------------------- 1、activity_main.xml[java] view plaincopy<LinearLayout xmlns:android"http://schemas.android.com/apk/res/…

python自帶的編輯器怎么換行_Python3基礎 print 自帶換行功能

鎮場詩&#xff1a; ———大夢誰覺&#xff0c;水月中建博客。百千磨難&#xff0c;才知世事無常。 ———今持佛語&#xff0c;技術無量愿學。愿盡所學&#xff0c;鑄一良心博客。 —————————————————————————————————————————— 1 …

查看db2數據庫名linux,【名說】DB2數據庫備份與恢復(linux環境)

lslinux 下備份db2數據庫1.SSH方式&#xff1a;登錄db2數據庫(因為是linux環境 &#xff0c; putty就不錯)2.進入備份文件夾&#xff1a;cd /home/backup/db2 list application | grep 數據庫名//(可能會有一些連接進程&#xff0c;有則全部殺掉)//殺進程&#xff1a;db2 "…

leetcode 回文數

2019獨角獸企業重金招聘Python工程師標準>>> 判斷一個整數是否是回文數。回文數是指正序&#xff08;從左向右&#xff09;和倒序&#xff08;從右向左&#xff09;讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向右…

安裝ae顯示安裝程序無法初始化_adobe CC 2015/2017安裝失敗(adobe cc安裝不了的解決辦法)...

adobe CC 2015/2017安裝失敗(adobe cc安裝不了的解決辦法)書法字體2015.06.18Adobe Application ManagerAdobe Creative Cloud 2015/2017全系統軟件已經可以從官網下載了&#xff0c;相信又將有一大波設計師會更新安裝adobe CC 2015/2017軟件。本著嘗鮮的精神&#xff0c;本人也…

Hadoop控制輸出文件命名

原文地址&#xff1a;http://blog.csdn.net/zuochanxiaoheshang/article/details/8769198 點擊閱讀原文 --------------------------------------------------- Hadoop 控制輸出文件命名 在一般情況下&#xff0c;Hadoop 每一個 Reducer 產生一個輸出文件&#xff0c;文件以 …

office高級應用與python綜合案例教程_office高級應用與python綜合案例實驗指導--詳細介紹...

隨著社會經濟的發展&#xff0c;現代信息技術逐漸改變著人們的工作和生活方式。為使學生掌握辦公自動化軟件高級應用的技能&#xff0c;了解Python程序基礎知識&#xff0c;綜合運用辦公自動化軟件分析和解決實際問題&#xff0c;編者編寫了本書。 本書圍繞高等學校培養應用型人…

linux系統的安全機制有哪些內容,系統安全機制

AG351.SELINUXSElinux 是一個強制訪問控制系統,它為每個進程與文件都打上一個安全上下文標簽,而 selinux 通過這個標簽對系統訪問控制進行管理。2.針對車載產品對于啟動安全、平臺運行安全、通信安全三個主要領域有著特 殊 很 高 的 要 求 , 為 此 Quectel 結 合 了 Qualcomm 給…

移動端video播放時不彈出頁面層

移動端視頻在播放時會主動彈出頁面&#xff0c;有的瀏覽器不會。對那些會的瀏覽器進行處理&#xff1a; 直接加上下面三個屬性即可&#xff0c;兼容方面就不說了&#xff0c;微信上是很ok的。 <video x5-playsinline"" playsinline"" webkit-playsinlin…

1.計算機語言發展史

第一代 計算機語言 第二代 匯編語言 第三代 高級語言 面向過程&#xff1a;c&#xff0c;fortan&#xff0c;cobol&#xff0c;pascal&#xff0c;ada 面向對象&#xff1a;c&#xff0c;java&#xff0c;c# 計算機語言&#xff1a; 01010100010111000 010101010000 00…

定題信息服務是從什么角度_信息管理練習題2

1.文件的目錄結構是網頁在服務器上的存放狀況。(對)2、網絡信息指引庫存放的是有關主題的數據庫或服務器地址。(對)3、數據庫組織方式是將超文本與多媒體技術結合起來的組織方式。(錯)4、按信息的組織方式劃分&#xff0c;搜索引擎則可以分為目錄式搜索引擎(Yahoo)、索引式搜索…

python判斷是否為完全數_Python識別完美數

完美數 完美數(perfect number&#xff0c;又稱完全數)指&#xff0c;它所有的真因子(即除了自身以外的因子)和&#xff0c;恰好等于它自身。 第一個完美數&#xff1a;6&#xff0c; 第二個完美數&#xff1a;28&#xff0c; 第三個完美數&#xff1a;496&#xff0c; 第四個完…

linux嵌入式做智能家居,嵌入式系統在智能家居中的應用

汪家樂利用嵌入式系統來構建智能家居系統&#xff0c;使得用戶可以根據實際需求來進行操作&#xff0c;不僅可以提高生活水平&#xff0c;并且與其他系統相比&#xff0c;其在運行上具有更高的穩定性。本文對嵌入式系統在智能家居中應用要點進行了簡單分析。【關鍵詞】嵌入式系…

前端路由的兩種實現原理

2019獨角獸企業重金招聘Python工程師標準>>> History API 這里不細說每一個 API 的用法&#xff0c;大家可以看 MDN 的文檔&#xff1a;https://developer.mozilla.org... 重點說其中的兩個新增的API history.pushState 和 history.replaceState 這兩個 API 都接收三…

2.JAVA簡史

SUN公司 --美國SUN&#xff08;Stanford university network&#xff09;公司 --在中國大陸的正式中文名&#xff1a;太陽計算機系統&#xff08;中國&#xff09;有限公司 --在中國臺灣中文名&#xff1a;升陽電腦公司 JAVA為什么被發明&#xff1f; --是sun公司Green項目…

es統計有多少個分組_ES 24 - 如何通過Elasticsearch進行聚合檢索 (分組統計)

1 普通聚合分析1.1 直接聚合統計(1) 計算每個tag下的文檔數量, 請求語法:GET book_shop/it_book/_search{"size": 0, // 不顯示命中(hits)的所有文檔信息"aggs": {"group_by_tags": {// 聚合結果的名稱, 需要自定義(復制時請去掉此注釋)"te…

python程序運行原理_談談 Python 程序的運行原理

因為我的個人網站 restran.net 已經啟用&#xff0c;博客園的內容已經不再更新。請訪問我的個人網站獲取這篇文章的最新內容&#xff0c;談談 Python 程序的運行原理 這篇文章準確說是『Python 源碼剖析』的讀書筆記&#xff0c;整理完之后才發現很長&#xff0c;那就將就看吧。…

3.JDK和JRE和JVM的區別

JDK --Java Development Kit --java 開發工具包 JRE --Java Runtime Environment --java運行時環境 JVM --Java Virtual Machine --java虛擬機 ------------- 更多的Java&#xff0c;Angular&#xff0c;Android&#xff0c;大數據&#xff0c;J2EE&#xff0c;Python…

緩存cache

由于Django是動態網站&#xff0c;所有每次請求均會去數據進行相應的操作&#xff0c;當程序訪問量大時&#xff0c;耗時必然會更加明顯&#xff0c;最簡單解決方式是使用&#xff1a;緩存&#xff0c;緩存將一個某個views的返回值保存至內存或者memcache中&#xff0c;5分鐘內…

微信小程序 等待幾秒、_微信小程序—setTimeout定時器的坑

背景實驗室需要將項目的app搬到微信的小程序上&#xff0c;終于知道為什么程序員是手藝人了&#xff0c;只要有需求&#xff0c;就要想方設法去填充這種需求&#xff0c;去年是小程序的元年了可以說&#xff0c;去年冬天一個叫跳一跳的小程序游戲出現在我的微信中&#xff0c;當…