久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

157次閱讀
沒有評論

共計 2490 個字符,預計需要花費 7 分鐘才能閱讀完成。

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)
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 語言及其擴展的開發是怎樣的問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注丸趣 TV 行業資訊頻道了解更多相關知識。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計2490字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 安岳县| 桑日县| 兴城市| 北票市| 阿荣旗| 临武县| 秀山| 南涧| 高阳县| 广河县| 东阿县| 杭锦旗| 怀来县| 武宣县| 丹阳市| 固原市| 永嘉县| 江达县| 河北省| 平潭县| 留坝县| 青神县| 元氏县| 高青县| 乐山市| 洛扎县| 阿勒泰市| 哈巴河县| 土默特右旗| 永寿县| 札达县| 娱乐| 临江市| 磴口县| 武邑县| 临夏市| 德昌县| 恩平市| 慈溪市| 中阳县| 长顺县|