日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

建立副本名称冲突_包的建立(一)

發布時間:2025/3/11 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 建立副本名称冲突_包的建立(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

目前,我個人只涉及到 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

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文件夾并不是默認需要的,這一點需要引起重視。

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 項中指出,否則建立包時,會產生報錯信息。

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

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

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---

總結

以上是生活随笔為你收集整理的建立副本名称冲突_包的建立(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。