r语言调用dll出现错误载入表里没有c字符名,R语言(示例代码)
1、R語言介紹
R和RStudio 是與計算機進行對話的兩個工具
RStudio 是話筒
R是溝通所用的語言
R的由來:基于S語言,由新西蘭奧克蘭大學的Robert Gentleman和Ross Ihaka開發,因兩位開發者名字首字母都是R,所以該語言命名為R。
怎樣理解R
一種計算機語言
一種用于統計分析、繪圖的操作環境
用戶接口
R 語言特點
R 是一款開源、免費的軟件,可以跨平臺運行
R 提供了非常豐富的統計分析技術
有很多非常實用并包含最新技術的R包,而且更新速度非常快
R的繪圖功能十分強大
軟件界面:
配置文件,選擇SDI單窗口
選擇save進行直接保存修改,不需要更改路徑
效果圖:
R環境下的提示符:
2、R包的安裝
下載包:
查看所有包的命名:
(.packages(all=T))
加載包命令:
沒有任何提示表示結果正常
向量的長度=向量的個數
字符串向量,雙引號 “ ”
c函數:拼接功能
同時下載兩個包
install.packages(c("reshape2","dplyr"))
創建R對象
R語言區分大小寫
對象sz
1:6數值
sz
連續賦值:
ls()函數調取所有對象
get()函數得到變量的數值
刪除對象:
刪除所有對象
rm(list=ls())
統計函數
sum()
sz+1:2
sz+1:4
元素方式運算
R使用元素執行方式運算的機制:匹配向量,獨立操作每對元素
如果兩個向量長度不等,R會在較短的向量上重復
以上這種行為在R中被稱為向量循環,幫助R執行元素方式運算
矩陣乘法:當需要使用矩陣乘法時,需要做出專門的請求
計算向量的內積:sz%*%sz
計算向量的外積:sz%o%sz
轉置:t()
計算矩陣的行列式:det()
sz*sz 平方運算
sz%*%sz? 一行一列
sz%o%sz
c(2,5,6,8)%o%c(3,7)
項目一:
用sample()函數,抽取1:6的隨機數,抽取兩次
sample函數可以完成隨機抽樣處理,其基本形式為:
sample(x, size, replace= FALSE)
replace=False 表示不可放回抽樣
用replicate()函數執行100次
replace=TRUE/replace=T可放回抽樣
基于名稱的傳參和基于位置的傳參
基于位置的傳參必須嚴格按照位置順序,否則出錯
自定義函數------------調用函數
練習:重復執行10次鄭色子,得到10個點數和
首先自定義函數,再調用函數
直接調用前面定義的函數
修改函數fix(函數名)
傳參處理:
生成等差數列函數seq
seq(...)## Default S3 method:
seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
length.out= NULL, along.with =NULL, ...)
seq.int(from, to, by, length.out, along.with, ...)
seq_along(along.with)
seq_len(length.out)
輸出9個
伴隨向量:
生成步長為1的等差數列
乘方運算
繪制一個散點圖:兩個變量的關系
直方圖
直方圖的橫縱坐標都是連續的,強調的是數值連續的變化規律,可以表示兩個變量
> xx
[1] 1 2 3 3 3
> qplot(x)
qplot(x,binwidth=1)
當次數夠多滿足正態分布
zn qplot(zn,binwidth=1)
# 入樣概率 prob控制概率
>zsz
function(sk){
skn
sum(skn)
}> zn qplot(zn,binwidth=1)
#添加入樣概率,6點概率是其他點數概率的3倍
function(sk=1:6){
skn
sum(skn)
}
向量的循環:
> rep(1:3,times=3)
[1] 1 2 3 1 2 3 1 2 3
> rep(1:3,each=3)
[1] 1 1 1 2 2 2 3 3 3
> rep(1:3,times=c(1,3,2))
[1] 1 2 2 2 3 3
>
字符串連接函數paste
paste()
其中...表示一個或多個R可以被轉化為字符型的對象;參數sep表示分隔符,默認為空格;
項目二-設計撲克牌模擬系統
要求:自動洗牌、發牌
任務一:創建一副牌。學會如何使用R的數據類型和數據結構。
任務二:編寫發牌和洗牌的函數。學習從一個數據集中抽取想要的數值。
任務三:改變點數系統。學習在數據的內部改變數據的取值
任務四:管理撲克牌的狀態。學習R的環境系統和作用域規則。
原子型向量
數據結構:數據結構是存儲、組織數據的方式,是數據內部的構成方法。
原子型向量:R里面最簡單的數據類型,是構成其他對象類型的基本元素。
原子型向量的特點:每個原子型向量都將一種類型的數據存儲在一個一維向量中。
原子型向量的分類:
雙整型:存儲普通的數值型數據;
> x1x1
[1] 1 2 3 4 5 6
> is.vector(x1)
[1] TRUE>length(x1)
[1] 6
>typeof(x1)
[1] "double"
整型:存儲整型的數據;
> intint
[1] -1 2 4
字符型:存儲文本型數據;
邏輯型:用來存儲TRUE和FALSE這兩個布爾數據。
> logiclogic
[1] TRUE FALSE>typeof(logic)
[1] "logical"
復數型和原始類型:分別來存儲復數和數據的原始字節。is.vector():查看某個對象是否為向量。
typeof():查看某個對象的數據類型
#練習:生成一個原子型向量,來存儲同花順的牌面
同一種花色的順子,比如黑桃的 A 、 K 、 Q 、 J 、 10
R-屬性
屬性:附加給原子型向量的額外信息。
attributes():查看一個對象包含哪些屬性信息。
原子向量最常見的三種屬性:名稱、維度和類。每種屬性都有自己的輔助函數。
練習1:給骰子的每個點數命名,并查看。
命名向量:
> klkl
a b1 2
關于維度:dim()函數可以將一個原子型向量轉換為一個n維數組。
> dim(sz)sz
[,1] [,2] [,3]
[1,] 1 3 5[2,] 2 4 6
>
練習2:將一個向量轉換為矩陣,并查看數據排列方式。
dim(sz)
練習3:用matrix()函數創建矩陣。
3行2列
2行3列
練習4:用array()函數創建數組。
2行3列,4個切片
typeof():查看某個對象的數據類型
R--類
類:新的結構,新的格式。class():查看一個對象的類。
練習1:賦予向量以維度屬性,觀察其class屬性的變化。
用屬性系統表示更多的數據類型:日期時間與因子。
日期與時間:R用一個特殊的類來表示日期和時間數據。
POSIXct:一個被廣泛用于表示日期與時間的框架。
R處理規則:R函數在顯示該對象之前,會根據POSIXct標準將該時間轉換為用戶可以理解的字符串。
練習2:用Sys.time()函數查看當前系統時間,并查看該對象的類和類型。
>Sys.time()
[1] "2019-12-05 21:37:24 CST"
> nownow
[1] "2019-12-05 21:37:57 CST"
練習3:用unclass()函數移除對象的class屬性。
>now
[1] "2019-12-05 21:37:57 CST"
> class(now)
[1] "POSIXct" "POSIXt"
>typeof(now)
[1] "double"
>unclass(now)
[1] 1575553078
> #練習:1970年1月1日零點之后的100萬秒是哪一天?
> mil
> class(mil)mil
[1] "1970-01-12 21:46:40 CST"
R--因子
因子:存儲分類信息。
R中因子生成機制:R會將向量中的值重新編碼為一串整數值,再將編碼的結果存儲在一個整型向量中,
然后對其添加一個levels屬性和一個class屬性。其中levels屬性包含顯示因子值的一組標簽。
練習1:用factor()函數創建一個因子。
練習2:用as.character()函數將一個因子強制轉換為字符串。
問題:當在原子型向量中存儲多種類型的數據會發生什么問題呢?
integer整型向量
> xbxb
[1] female male male female
Levels: female male> class(xb)
[1] "factor"
>typeof(xb)
[1] "integer"
>as.numeric(xb)
[1] 1 2 2 1
強制轉換
R強制轉換所遵循的規則:
如果一個原子型向量包含字符串,R會將該向量中的所有元素都轉換成字符型。
如果一個原子型向量只包含邏輯型和數值型元素,R會將邏輯型全部轉換成數值型。
原因:單一數據類型的好處:數據操作更加直接和高效;而且就變量而言,變量中每個值度量的都是相同的屬性,
因此沒有必要使用不同的數據類型。
NA表示缺失值
> mnmn
[1] "男" "男" "女"
> sum(mn=="男")
[1] 2
> sum(mn=="女")
[1] 1
> sum(mn=="男")/sum(mn)
Errorin sum(mn) : ‘type‘(character)參數不對> sum(mn=="男")/sum(mn!="")
[1] 0.6666667
> sum(mn=="男")/length(mn)
[1] 0.6666667
> sum(mn=="男")/sum(c(mn=="男",mn=="女"))
[1] 0.6666667
> mean(mn=="男")
[1] 0.6666667
列表
列表:將數據組織在一個一維集合中。與原子型向量的區別在于,列表并不是將某些具體的值組織起來,而是組織R對象。
練習:用list()函數創建一個列表
[[]]:表示來自列表的哪一個元素。
雙索引系統:因為列表的元素可以是任意一種R對象。
列表的特點:R中全能型的存儲工具。
下面最外層的list有三個元素
命名:
二維表
> data.frame(姓名=c("張三","李四"),成績=c(100,90))
姓名 成績1 張三 100
2 李四 90
數據框
數據框:列表的二維版本。將向量組織在一個二維表格中,每一個向量作為這個表格一列。
需要注意的問題:
不同的列可以包含不同的數據類型;
每一列必須具有相同的長度;
每個向量都有自己的名稱;
stringsAsFactors參數應設置為FALSE。
練習:用data.frame()函數創建一副牌。
> data.frame(姓名=c("張三","李四"),成績=c(100,90))->df>df
姓名 成績1 張三 100
2 李四 90
>typeof(df)
[1] "list"
stringsAsFactors=F
> data.frame(姓名=c("張三","李四"),成績=c(100,90),stringsAsFactors=F)->df>df
姓名 成績1 張三 100
2 李四 90
>str(df)‘data.frame‘: 2 obs. of 2variables:
$ 姓名: chr"張三" "李四"$ 成績: num100 90
RStudio設置
#項目二-構建一副撲克牌
pkp
hs=rep(c("紅桃","黑桃","梅花","方塊"),each=13),
ds=rep(1:13,times=4),
stringsAsFactors= F)
str(pkp)#查看pkp的前六條數據
head(pkp)
#查看pkp的前八條數據
head(pkp,n=8)#查看pkp的后六條數據
tail(pkp)
#查看當前的工作目錄
getwd()#設置工作目錄
setwd("C:\Users\Desktop\DT")#寫入外部文件
write.csv(pkp,file = "puke.csv",row.names = F)
#小結#第一個角度:從數據類型的角度#數據類型相同的,向量、矩陣、數組#數據類型不同的:列表、數據框
#第二個角度#一維結構:向量、矩陣#二維結構:矩陣、數據框#三維或三維以上結構:數組
選中要運行的代碼,執行運行
#必知必會的函數#whichwhich.max()which.min()
#which:返回一個邏輯向量里面真值所在位置
which(c(T,F,T))
man
which(man=="男")#which.max():返回一個向量里面最大值所在位置
which.max(c(3,4,7))#which.min():返回一個向量里面最大值所在位置
which.min(c(3,4,7))#排序#第一種:直接排序
x
sort(x)
x
sort(x,decreasing =T)#第二種:間接排序
order(x)#第三種:倒著排
rev(x)
總結
以上是生活随笔為你收集整理的r语言调用dll出现错误载入表里没有c字符名,R语言(示例代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算术基本定理证明用计算机,良序原理:算术
- 下一篇: 大学计算机spoc长安大学答案,2018