R語言教學 2 基礎運算及科學運算語法、物件的種類和索引

R基礎語法

這裡我們可以參照下面的例子,了解常用的語法規則

基本運算

# 加法
5 + 3
# 結果:8

# 減法
10 - 4
# 結果:6

# 乘法
6 * 7
# 結果:42

# 除法
20 / 4
# 結果:5

# 乘方
2^3
# 結果:8

# 取餘數
10 %% 3
# 結果:1

# 取整數商
10 %/% 3
# 結果:3

數學函數

# 絕對值
abs(-5)
# 結果:5

# 指數函數
exp(1)
# 結果:2.7182818

# 自然對數
log(2.7182818)
# 結果:1

# 對數,指定底數
log(100, base = 10)
# 結果:2

# 平方根
sqrt(16)
# 結果:4

# 三角函數(如正弦、餘弦、正切)
sin(pi / 2)
# 結果:1

cos(pi)
# 結果:-1

tan(pi / 4)
# 結果:1

比較運算

# 相等
5 == 5
# 結果:TRUE

# 不相等
5 != 3
# 結果:TRUE

# 大於
7 > 5
# 結果:TRUE

# 小於
3 < 7
# 結果:TRUE

# 大於等於
5 >= 5
# 結果:TRUE

# 小於等於
3 <= 7
# 結果:TRUE

邏輯運算

# AND 運算
TRUE & FALSE
# 結果:FALSE

# OR 運算
TRUE | FALSE
# 結果:TRUE

# NOT 運算
!TRUE
# 結果:FALSE

當然我們可以結合c函數,對一個數字組合做運算

結合 c() 函數進行加減乘除運算

# 定義向量
vec1 = c(1, 2, 3, 4)
vec2 = c(4, 3, 2, 1)

# 向量加法
result_add = vec1 + vec2
# 結果:5 5 5 5

# 向量減法
result_subtract = vec1 - vec2
# 結果:-3 -1 1 3

# 向量乘法
result_multiply = vec1 * vec2
# 結果:4 6 6 4

# 向量除法
result_divide = vec1 / vec2
# 結果:0.25 0.6666667 1.5 4

結合 c() 函數進行取餘數運算

# 定義向量
vec3 = c(10, 15, 20, 25)

# 向量取餘數
result_mod = vec3 %% 4
# 結果:2 3 0 1

結合 c() 函數進行取整數除法運算

# 定義向量
vec4 = c(10, 15, 20, 25)

# 向量取整數商
result_int_div = vec4 %/% 4
# 結果:2 3 5 6

結合 c() 函數進行數學函數運算

# 定義向量
vec5 = c(1, 2, 3, 4)

# 絕對值
result_abs = abs(c(-1, -2, -3, -4))
# 結果:1 2 3 4

# 指數函數
result_exp = exp(vec5)
# 結果:2.7182818 7.3890561 20.085537 54.598150

# 自然對數
result_log = log(c(2.7182818, 7.3890561, 20.085537, 54.598150))
# 結果:1 2 3 4

# 平方根
result_sqrt = sqrt(c(1, 4, 9, 16))
# 結果:1 2 3 4

物件的索引

向量的索引

# 定義一個向量
vec = c(10, 20, 30, 40, 50)

# 訪問向量的第一個元素
first_element = vec[1]
# 結果:10

# 訪問向量的第三個元素
third_element = vec[3]
# 結果:30

# 訪問向量的多個元素(例如,第2和第4個元素)
subset_elements = vec[c(2, 4)]
# 結果:20 40

# 訪問向量的一個範圍內的元素(例如,第2到第4個元素)
range_elements = vec[2:4]
# 結果:20 30 40

# 排除向量中的特定元素(例如,排除第3個元素)
exclude_element = vec[-3]
# 結果:10 20 40 50

矩陣的索引

# 定義一個矩陣
mat = matrix(1:9, nrow = 3, ncol = 3)

# 訪問矩陣的元素(例如,第2行第3列的元素)
element = mat[2, 3]
# 結果:6

# 訪問矩陣的整行(例如,第1行)
row = mat[1, ]
# 結果:1 4 7

# 訪問矩陣的整列(例如,第2列)
column = mat[, 2]
# 結果:2 5 8

# 訪問矩陣的子矩陣(例如,第1和第2行,第2和第3列的元素)
submatrix = mat[1:2, 2:3]
# 結果:
#      [,1] [,2]
# [1,]    2    3
# [2,]    5    6

數據框的索引

# 定義一個數據框
df = data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 30, 35),
  height = c(165, 170, 175)
)

# 訪問數據框的某個元素(例如,第2行第3列的元素)
element = df[2, 3]
# 結果:170

# 訪問數據框的某行(例如,第1行)
row = df[1, ]
# 結果:
#     name age height
# 1  Alice  25    165

# 訪問數據框的某列(例如,age列)
column = df[, "age"]
# 結果:25 30 35

# 訪問數據框的多個列(例如,name和height列)
multiple_columns = df[, c("name", "height")]
# 結果:
#      name height
# 1  Alice    165
# 2    Bob    170
# 3 Charlie    175

# 訪問數據框的多個元素(例如,第1和第3行的age和height列)
subset_df = df[c(1, 3), c("age", "height")]
# 結果:
#   age height
# 1  25    165
# 3  35    175

物件種類

在R語言中,常見的物件類型包括數值型、字符型、邏輯型、向量、因子、矩陣、數據框和列表等。這些物件可以使用一系列函數進行轉換,例如 as.numeric()as.character() 等等。下面是這些物件類型及其相關函數的詳細介紹:

物件類型描述常見轉換函數示例
數值型包含實數或整數as.numeric(), as.integer()as.numeric("123")
字符型包含字符或字符串as.character()as.character(123)
邏輯型包含布爾值 (TRUEFALSE)as.logical()as.logical(1)
向量同類型元素的集合as.vector()as.vector(c(1, 2, 3))
因子類別型數據,通常用於分類變量as.factor()as.factor(c("a", "b", "a"))
矩陣二維數據結構,元素同類型as.matrix()as.matrix(data.frame(x=1:3))
數據框表格數據,列可以是不同類型的數據as.data.frame()as.data.frame(matrix(1:4, 2, 2))
列表各類型元素的集合,元素可以是不同類型as.list()as.list(c(1, "a", TRUE))

轉換函數的詳細示例

  1. 數值型
   num_char = "123"
   num = as.numeric(num_char)
   # 結果:123
  1. 字符型
   char_num = 123
   char = as.character(char_num)
   # 結果:"123"
  1. 邏輯型
   logical_num = 1
   logical = as.logical(logical_num)
   # 結果:TRUE
  1. 向量
   vec = as.vector(c(1, 2, 3))
   # 結果:1 2 3
  1. 因子
   fac = as.factor(c("a", "b", "a"))
   # 結果:因子:1 2 1
  1. 矩陣
   mat = as.matrix(data.frame(x = 1:3, y = 4:6))
   # 結果:
   #      x y
   # [1,] 1 4
   # [2,] 2 5
   # [3,] 3 6
  1. 數據框
   df = as.data.frame(matrix(1:4, nrow = 2, ncol = 2))
   # 結果:
   #   V1 V2
   # 1  1  3
   # 2  2  4
  1. 列表
   lst = as.list(c(1, "a", TRUE))
   # 結果:
   # [[1]]
   # [1] 1
   #
   # [[2]]
   # [1] "a"
   #
   # [[3]]
   # [1] TRUE

這些示例展示了R中常見物件類型及其轉換函數的使用方法。

Back to Blog pytorch連結

返回頂端