網站首頁 編程語言 正文
一、常量與變量
1.常量 ??
? ? ? ? R 語言基本的數據類型有數值型,邏輯型(TRUE, FALSE),文本(字符串)。 支持缺失值,有專門的復數類型。
? ? ? ? 常量是指直接寫在程序中的值。
? ? ? ? 數值型常量包括整型、單精度、雙精度等,一般不需要區分。寫法如 123, 123.45, -123.45,-0.012, 1.23E2, -1.2E-2 等。為了表示 123 是整型,可以寫成 123L。
? ? ? ? 字符型常量用兩個雙撇號或兩個單撇號包圍,如"Li Ming" 或'Li Ming'。字符型支持中文,如"李明" 或'李明'。國內的中文編碼主要有 GBK 編碼和 UTF-8 編碼,有時會遇到編碼錯誤造成亂碼的題,MS Windows 下 R 程序 一般用 GBK 編碼,但是 RStudio 軟件采用 UTF-8 編碼。在 R 軟件內字符串一般用 UTF-8 編碼保存。
? ? ? ? 邏輯型常量只有 TRUE 和 FALSE。
? ? ? ? 缺失值用 NA 表示。統計計算中經常會遇到缺失值,表示記錄丟失、因為錯誤而不能用、節假日沒有數據等。除了數值型,邏輯型和字符型也可以有缺失值,而且字符型的空白值不會自動辨識為缺失值,需要自己規定。R 支持特殊的 Inf 值,這是實數型值,表示正無窮大,不算缺失值。
? ? ? ? ?復數常量寫法如 2.2 + 3.5i, 1i 等。
2.變量? ? ??
? ? ? ? 程序語言中的變量用來保存輸入的值或者計算得到的值。在 R 中,變量可以保存所有的數據類型,比如標量、向量、矩陣、數據框、函數等。
? ? ? ? 變量都有變量名,R 變量名必須以字母、數字、下劃線和句點組成,變量名的第一個字符不能取為數字。在中文環境下,漢字也可以作為變量名的合法字符使用。變量名是區分大小寫的,y 和 Y 是兩個不同的變量名。
? ? ? ? 變量名舉例: x, x1, X, cancer.tab, clean_data, diseaseData。
? ? ? ? 用 <-賦值的方法定義變量。<-也可以寫成 =,但是 <-更直觀。如
x5 <- 6.25 x6 = sqrt(x5)
二、數據類型
????????R 語言基本的數據類型有數值,邏輯型(TRUE, FALSE),文本(字符串)。支持缺失值,有專門的復數類型。 ????????
????????R 語言數據結構包括向量,矩陣和數據框,多維數組,列表,對象等。數據中元素、行、列還可以用名字訪問。最基本的是向量類型。向量類型數據的訪問方式也是其他數據類型訪問方式的基礎。
三、數值型向量
????????向量是將若干個基礎類型相同的值存儲在一起,各個元素可以按序號訪問。如 果將若干個數值存儲在一起可以用序號訪問,就叫做一個數值型向量。
3.1?c() 函數
用 c() 函數把多個元素或向量組合成一個向量。如:
marks <- c(10, 6, 4, 7, 8) marks
返回:
再如:?
x <- c(1:3, 10:13) x
返回:
?再如:
x1 <- c(1, 2) x2 <- c(3, 4) x <- c(x1, x2) x
返回:
3.2?length(x)
????????length(x) 可以求 x 的長度
x <- c(1:3, 10:13) length(x)
返回:
3.3?numeric()
????????numeric() 函數可以用來初始化一個指定元素個數而元素都等于零的數值型向量,如 numeric(10) 會生成元素為 10 個零的向量,長度為零的向量表示為 numeric(0)。
numeric(10)
返回:
四、向量運算
1.標量和標量運算
????????單個數值稱為標量,R 沒有單獨的標量類型,標量實際是長度為 1 的向量。 R 中四則運算用 + - * / ? 表示 (加、減、乘、除、乘方),如
1.5 + 2.3 - 0.6 + 2.1*1.2 - 1.5/0.5 + 2^3 ## [1] 10.72
返回:
????????R 中四則運算仍遵從通常的優先級規則,可以用圓括號 () 改變運算的先后次序。如
1.5 + 2.3 - (0.6 + 2.1)*1.2 - 1.5/0.5 + 2^3 ## [1] 5.56
????????除了加、減、乘、除、乘方,R 還支持整除運算和求余運算。用%/% 表示整除, 用%% 表示求余。如
5 %/% 3 ## [1] 1 5 %% 3 ## [1] 2
返回:
2.向量與標量運算
????????向量與標量的運算為每個元素與標量的運算, 如
x <- c(1, 10) x + 2 ## [1] 3 12 x - 2 ## [1] -1 8 x * 2 ## [1] 2 20 x / 2 ## [1] 0.5 5.0 x ^ 2 ## [1] 1 100 2 / x ## [1] 2.0 0.2 2 ^ x ## [1] 2 1024 x %% 2 ##[1] 1 0 x %/% 2 ##[1] 0 5
返回:
一個向量乘以一個標量,就是線性代數中的數乘運算。 四則運算時如果有缺失值,缺失元素參加的運算相應結果元素仍缺失。如
c(1, NA, 3) + 10
返回:
3.等長向量運算
等長向量的運算為對應元素兩兩運算。如
x1 <- c(1, 10) x2 <- c(4, 2) x1 + x2
返回:
同樣也可以進行減,乘,除;如
x1 - x2 ## [1] -3 8 x1 * x2 ## [1] 4 20 x1 / x2 ## [1] 0.25 5.00
4.不等長向量的運算
? ? ? ? 兩個不等長向量的四則運算,如果其長度為倍數關系,規則是每次從頭重復利用短的一個。如:
x1 <- c(10, 20) x2 <- c(1, 3, 5, 7) x1 + x2
返回:
????????不僅是四則運算,R 中有兩個或多個向量按照元素一一對應參與某種運算或函數調用時,如果向量長度不同,一般都采用這樣的規則。 ????????如果兩個向量的長度不是倍數關系,會給出警告信息。如
c(1,2) + c(1,2,3)
返回:
五、向量函數
1.向量化的函數
????????R 中的函數一般都是向量化的: 在 R 中,如果普通的一元函數以向量為自變量,一般會對每個元素計算。這樣的函數包括 sqrt, log10, log, exp, sin, cos, tan 等許多。如
sqrt(c(1, 4, 6.25))
返回:
????????為了查看這些基礎的數學函數的列表,運行命令 help.start(),點擊鏈接 “Search Engine and Keywords”,找到 “Mathematics” 欄目,瀏覽其中的 “arith” 和 “math” 鏈接中的說明。
常用的數學函數有:常用的數學函數有:
? 舍入:ceiling, floor, round, signif, trunc, zapsmall
? 符號函數 sign
? 絕對值 abs
? 平方根 sqrt
? 對數與指數函數 log, exp, log10, log2
? 三角函數 sin, cos, tan
? 反三角函數 asin, acos, atan, atan2
? 雙曲函數 sinh, cosh, tanh
? 反雙曲函數 asinh, acosh, atanh
有一些不太常用的數學函數:
? 貝塔函數 beta, lbeta
? 伽 瑪 函 數 gamma, lgamma, digamma, trigamma, tetragamma, pentagamma
? 組合數 choose, lchoose
? 富利葉變換和卷積 fft, mvfft, convolve
? 正交多項式 poly
? 求根 polyroot, uniroot
? 最優化 optimize, optim
? Bessel 函數 besselI, besselK, besselJ, besselY
? 樣條插值 spline, splinefun
? 簡單的微分 deriv
????????如果自己編寫的函數沒有考慮向量化問題,可以用 Vectorize() 函數將其轉換成向量化版本。
2.排序函數
????????sort(x) 返回排序結果。rev(x) 返回把各元素排列次序反轉后的結果。order(x) 返回排序用的下標。如
x <- c(33, 55, 11) sort(x) ## [1] 11 33 55 rev(sort(x)) ## [1] 55 33 11 order(x) ## [1] 3 1 2 x[order(x)] ## [1] 11 33 55
返回:
??????order(x)??結果中 3 是 x 的最小元素 11 所在的位置下標,1 是 x 的 第二小元素 33 所在的位置下標,2 是 x 的最大元素 55 所在的位置下標。
3.統計函數
????????sum(求和), mean(求平均值), var(求樣本方差), sd(求樣本標準差), min(求最小值), max(求最大值), range(求最小值和最大值) 等函數稱為統計函數,把輸入向量看作樣本,計算樣本統計量。prod 求所有元素的乘積。
????????cumsum 和 cumprod 計算累加和累乘積。如
cumsum(1:5)
返回:
cumprod(1:5)
返回:
????????其它一些類似函數有 pmax, pmin, cummax, cummin 等。
4.生成規則序列的函數
seq 函數是冒號運算符的推廣。比如
seq(5) seq(2,5) seq(11, 15, by=2) #產生從 0 到 2π 的等間隔序列,序列長度指定為 100 seq(0, 2*pi, length.out=100)
返回:
?????????在使用變量名時次序可以顛倒,比如
seq(to=5, from=2)
返回:
?????????rep() 函數用來產生重復數值。
為了產生一個初值為零的長度為 n 的向量,用 x <- rep(0, n) 。
rep(c(1,3), 2)
返回:
?再比如:
rep(c(1,3), c(2,4))
????????把第一自變量的第一個元素 1 按照第二自變量中第一個元素 2 的次數重復,把第一自變量 中第二個元素 3 按照第二自變量中第二個元素 4 的次數重復,返回:
?????????如 果 希 望 重 復 完 一 個 元 素 后 再 重 復 另 一 元 素, 用 each= 選 項, 比 如
rep(c(1,3), each=2)
返回:
六、?復數向量
????????復數常數表示如 3.5+2.4i, 1i。用函數 complex() 生成復數向量,指定實部和虛部。如
complex(c(1,0,-1,0), c(0,1,0,-1))
返回:
?????????在 complex() 中可以用 mod 和 arg 指定模和輻角,如
complex(mod=1,arg=(0:3)/2*pi)
返回:
????????用 Re(z) 求 z 的實部,用 Im(z) 求 z 的虛部,用 Mod(z) 或 abs(z) 求 z 的模,用 Arg(z) 求 z 的輻角,用 Conj(z) 求 z 的共軛。 ????????sqrt, log, exp, sin 等函數對復數也有定義,但是函數定義域在自變量為實數時可能有限制而復數無限制,這時需要區分自變量類型。如
sqrt(-1)sqrt(-1 + 0i)
返回:
練習
1. 顯示 1 到 100 的整數的平方根和立方根(提示:立方根就是三分之一次 方)。?
2. 設有 10 個人的小測驗成績為:
????????77 60 91 73 85 82 35 100 66 75
????????(1) 把這 10 個成績存入變量 x;
????????(2) 從小到大排序;
????????(3) 計算 order(x),解釋 order(x) 結果中第 3 項代表的意義。
????????(4) 計算這些成績的平均值、標準差、最小值、最大值、中位數。
3. 生成 [0, 1] 區間上等間隔的 100 個格子點存入變量 x 中。
原文鏈接:https://blog.csdn.net/qq_25990967/article/details/122608699
相關推薦
- 2022-06-02 C++實現投骰子的隨機游戲_C 語言
- 2024-01-05 【PostgreSQL啟動,停止命令(重啟)】
- 2022-11-15 .NETCore基于RabbitMQ實現延時隊列的兩方法_實用技巧
- 2022-07-23 C#中三種Timer計時器的詳細用法_C#教程
- 2021-11-08 Linux常用硬盤管理相關命令介紹_Linux
- 2022-07-26 讓一個有寬高的盒子垂直水平居中
- 2023-07-28 el-input 文本域固定高度
- 2022-02-20 Android?WebView開發之WebView與Native交互_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支