亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

R語言及其擴展的開發是怎樣的

發布時間:2021-11-22 11:02:47 來源:億速云 閱讀:126 作者:柒染 欄目:云計算

R語言及其擴展的開發是怎樣的,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

簡介

    R是一門主要用于統計分析、繪圖的語言和環境,是S語言的一種實現,但R的語法卻是來自Scheme,是一種面向對象、支持反射的函數式腳本語言。

    R本來是由來自新西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman開發,隨即成為GNU的項目之一,現在由R開發核心團隊''負責開發。R現在支持多種平臺,包括GNU/Linux、FreeBSD、Windows和MacOS。

作業環境

與其它商業統計軟件不同,R主要的用戶交互接口是R解析器。用戶可以與R如同與shell一般靈活交互,也可以通過腳本向R提交作業。R提供 libR.so共享對象,開發者可以設計GUI前端并與之連接,這樣既能夠提供R解析器接口又能提供豐富的菜單功能和其它作業方式。

在*nix上,vim和(x)emacs是著名的兩大編輯器,相應地,開發者提供了R的交互支持:

  • ESS (Emacs Speaks Statistics)

R語言及其擴展的開發是怎樣的

Vim-r

R語言及其擴展的開發是怎樣的

作為KDE桌面的原生程序,RKWard提供了良好的IDE體驗!

R語言及其擴展的開發是怎樣的

使用

這里我們推薦讀者參考R的官方參考手冊。

為什么使用R

為什么要使用R?撇開R是自由軟件不說,還有以下原因:

  • R逐漸成為統計軟件的事實標準,在很多方面已經趕上甚至超越SAS和SPSS等商業軟件。

  • R的語法簡答而清晰

  • R的效率很高(主要取決于BLAS的實現)

  • CRAN有豐富的擴展包

  • 除了原生的C接口,R還有良好的語言綁定,如C++,Java,方便用戶設計自己的計算敏感的程序

  • R支持OpenMP和OpenMPI等并行基礎,適合計算敏感的場合

編寫擴展

在上文提及了R有良好的語言綁定,其中擴展包Rcpp方便用戶使用C++來開發擴展。我們使用Rcpp開發了兩個實驗性的項目RcppKmeans和RcppNaiveBayes,用于數據挖掘的研究。

創建基于Rcpp擴展

顯然,我們需要安裝Rcpp,注意確保GCC和R的開發環境是完備的:

install.packages("Rcpp")

轉移到你的工作目錄

library(Rcpp) 
Rcpp.package.skeleton("MyProjectName")

OK! MyProjectName的骨架建好了,開始寫代碼!等等,建議按照目錄里的Read-and-delete-me的指示走一遍。

RcppKmeans

為一簡單的用于文本的kmeans聚類器,通過應用OpenMP技術,在多核平臺上利用并行帶來的優勢。

安裝
git clone git://github.com/ucweb/RcppKmeans.git 
R CMD INSTALL RcppKmeans
示例
1 library(RcppKmeans) 
2 # 9 個點 
3 s <- list( 
4 c("a", "a", "b", "b" ), 
5 c("b", "b", "a", "c"), 
6 c("e", "e", "f", "f"), 
7 c("t", "t", "f", "f"), 
8 c("s", "t", "h", "f"), 
9 c("s", "t", "h", "f"), 
10 c("s", "t", "h", "f"), 
11 c("s", "t", "h", "f"), 
12 c("s", "h", "t", "f")) 
13 Kmeans(s,4L,1e3L,0.25)

輸出:

$clusters 
$clusters[[1]] 
[1] 7 4 5 6 8 
$clusters[[2]] 
[1] 1 0 
$clusters[[3]] 
[1] 2 
$clusters[[4]] 
[1] 3 
$iterations 
[1] 2 
$divergent 
integer(0)

輸出結果說明:

c("a", "a", "b", "b" )和 c("b", "b", "a", "c")被歸入第二個聚類,c("e", "e", "f", "f")和c("t", "t", "f", "f")被孤立,而剩余的則歸入第一個聚類。

RcppNaivebayes

為一簡單的用于文本的分類器,本身不應用并行技術,但提供的接口可以與Rmpi一同使用,從而實現并行處理。

安裝
git clone git://github.com/ucweb/RcppNaiveBayes.git
R CMD INSTALL RcppNaiveBayes
示例
1 library(RcppNaiveBayes)
2
3 a <- list(c("A", "B", "B", "D", "A", "Z"),
4           c("C", "B", "C", "Z", "H"))
5 b <- list(c("A", "F", "Y", "F", "W"),
6           c("I", "A", "G", "F", "P", "D"),
7           c("G", "A", "N", "P"))
8 d <- list(c("Y", "D", "P"),
9           c("H", "H"),
10           c("Z", "Z"))
11 m <- NaiveBayesTrain(list(a,b)) # 訓練兩個類別
12 NaiveBayesPredict(m, d)

輸出:

$scores
$scores[[1]]
[1] 0.1000000 0.2666667
$scores[[2]]
[1] 0.40000000 0.06666667
$scores[[3]]
[1] 0.90000000 0.06666667
$predicted
[1] 2 1 1
attr(,"class")
[1] "RcppNaiveBayesPredict"

輸出結果說明:

$predicted的值為d各元素被歸入的類別,即c("Y", "D", "P")以分值0.2666667>0.1000000而歸入類別b;同理,c("Z", "Z")被歸入類別a。

    R是一門十分容易掌握的語言,加之擴展的便捷開發,它迅速在計算相關領域日益得到重視,很多企業級的應用也有R的一席之地。然而R并非萬能,加之并行計算并沒有統一模式,以及數據規模的爆炸性增長給予R的in-memory計算方式極大的沖擊。如果要將R應用于大數據領域,那么還有一段路要走,盡管商業方案的RevoScale提供了解決之道。

關于R語言及其擴展的開發是怎樣的問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰考县| 金溪县| 正镶白旗| 宣汉县| 邵武市| 高平市| 出国| 沙坪坝区| 铁力市| 治县。| 宁陕县| 乐陵市| 紫阳县| 图木舒克市| 百色市| 谢通门县| 南和县| 朔州市| 许昌县| 黎川县| 潜江市| 博爱县| 扬州市| 高青县| 鸡东县| 抚宁县| 江川县| 张家界市| 安庆市| 托克逊县| 阿拉尔市| 乐陵市| 闵行区| 土默特左旗| 车险| 曲水县| 政和县| 镇雄县| 霍林郭勒市| 瑞昌市| 东港市|