向量與其他運用
x <- c(1, 3, 5, 7, 9, 11, 13, 15)
x
## [1] 1 3 5 7 9 11 13 15
x * 3
## [1] 3 9 15 21 27 33 39 45
x + 4
## [1] 5 7 9 11 13 15 17 19
x - 5
## [1] -4 -2 0 2 4 6 8 10
x/4
## [1] 0.25 0.75 1.25 1.75 2.25 2.75 3.25 3.75
x^2
## [1] 1 9 25 49 81 121 169 225
x*x
## [1] 1 9 25 49 81 121 169 225
sqrt(x)
## [1] 1.000000 1.732051 2.236068 2.645751 3.000000 3.316625 3.605551 3.872983
1:20
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
20:1
## [1] 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-5:15
## [1] -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
5:-15
## [1] 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13
## [20] -14 -15
# 製造兩個同長度的向量
x <- 1:20
y <- -4:15
# 把它們做加減乘
x + y
## [1] -3 -1 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35
x - y
## [1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
x * y
## [1] -4 -6 -6 -4 0 6 14 24 36 50 66 84 104 126 150 176 204 234 266
## [20] 300
# 一個向量除另一個向量—注意到除以0會得到Inf為結果
x/y
## [1] -0.2500000 -0.6666667 -1.5000000 -4.0000000 Inf 6.0000000
## [7] 3.5000000 2.6666667 2.2500000 2.0000000 1.8333333 1.7142857
## [13] 1.6250000 1.5555556 1.5000000 1.4545455 1.4166667 1.3846154
## [19] 1.3571429 1.3333333
# 一個向量成為另一個的指數
x^y
## [1] 1.000000e+00 1.250000e-01 1.111111e-01 2.500000e-01 1.000000e+00
## [6] 6.000000e+00 4.900000e+01 5.120000e+02 6.561000e+03 1.000000e+05
## [11] 1.771561e+06 3.583181e+07 8.157307e+08 2.066105e+10 5.766504e+11
## [16] 1.759219e+13 5.826222e+14 2.082296e+16 7.990067e+17 3.276800e+19
# 查看每個向量的長度
length(x)
## [1] 20
length(y)
## [1] 20
# 把它們加起來之後的長度應該等於未加之前的長度
length(x + y)
## [1] 20
# 觀察一下長度不同的向量如何相加
x
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
x + c(1, 2)
## [1] 2 4 4 6 6 8 8 10 10 12 12 14 14 16 16 18 18 20 20 22
x + c(1, 2, 3)
## Warning in x + c(1, 2, 3): 較長的物件長度並非較短物件長度的倍數
## [1] 2 4 6 5 7 9 8 10 12 11 13 15 14 16 18 17 19 21 20 22
# 向量的邏輯
x
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
y
## [1] -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
x <= 5
## [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x > y
## [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE
x < y
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x <- 20:1
y <- -4:15
any(x < y)
## [1] TRUE
all(x < y)
## [1] FALSE
# 字串構成的向量與數值向量的比較
q <- c("Handball", "Football", "Baseball", "Sprint", "Discus",
"Javelin", "Basketball", "Tennis", "Volleyball", "Soccer")
y <- -4:15
x <- 10:1
nchar(q) # 有多少字元
## [1] 8 8 8 6 6 7 10 6 10 6
nchar(y)
## [1] 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
nchar(x)
## [1] 2 1 1 1 1 1 1 1 1 1
# 查看(取出)向量裡的元素
x[1]
## [1] 10
x[1:2]
## [1] 10 9
x[c(1, 4)]
## [1] 10 7
q[1]
## [1] "Handball"
q[1:2]
## [1] "Handball" "Football"
q[c(1, 4)]
## [1] "Handball" "Sprint"
x[12] # 找不到,顯示 NA
## [1] NA
q[11] # 找不到,顯示 NA
## [1] NA
資料型態
data.frame 資料框
q <- c("Handball", "Football", "Baseball", "Sprint", "Discus",
"Javelin", "Basketball", "Tennis", "Volleyball", "Soccer")
y <- -4:5
x <- 10:1
theDF <- data.frame(x, y, q)
theDF
## x y q
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
theDF <- data.frame(First = x, Second = y, Sport = q)
theDF
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
nrow(theDF)
## [1] 10
ncol(theDF)
## [1] 3
dim(theDF)
## [1] 10 3
names(theDF)
## [1] "First" "Second" "Sport"
names(theDF)[3]
## [1] "Sport"
rownames(theDF)
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
rownames(theDF) <- c("One", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten")
rownames(theDF)
## [1] "One" "Two" "Three" "Four" "Five" "Six" "Seven" "Eight" "Nine"
## [10] "Ten"
# 設回通用的標註(index)
rownames(theDF) <- NULL
rownames(theDF)
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
head(theDF) # 預設會印出頭6筆,資料多筆時很有用
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
head(theDF, n = 7) # 印出頭7筆
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
tail(theDF) # 預設會印出末6筆,資料多筆時很有用
## First Second Sport
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
class(theDF)
## [1] "data.frame"
theDF$Sport
## [1] "Handball" "Football" "Baseball" "Sprint" "Discus"
## [6] "Javelin" "Basketball" "Tennis" "Volleyball" "Soccer"
theDF[3, 2]
## [1] -2
# 第三橫排,第二到第三直排
theDF[3, 2:3]
## Second Sport
## 3 -2 Baseball
# 第二直排,第三和第五橫排
# 由於只選了一個直排,其將回傳一個向量(vector)
# 因此直排名稱將不被顯示
theDF[c(3, 5), 2]
## [1] -2 0
# 第二和第五橫排,第二到四直排,因為只有三直排,執行會出錯
# theDF[c(2, 5), 2:4]
# 所有第三直排的元素
# 由於只是單一直排,因此回傳一個向量(vector)
theDF[, 3]
## [1] "Handball" "Football" "Baseball" "Sprint" "Discus"
## [6] "Javelin" "Basketball" "Tennis" "Volleyball" "Soccer"
# 所有第二到第三直排的元素
theDF[, 2:3]
## Second Sport
## 1 -4 Handball
## 2 -3 Football
## 3 -2 Baseball
## 4 -1 Sprint
## 5 0 Discus
## 6 1 Javelin
## 7 2 Basketball
## 8 3 Tennis
## 9 4 Volleyball
## 10 5 Soccer
# 所有第二橫排的元素
theDF[2, ]
## First Second Sport
## 2 9 -3 Football
# 所有第二到第四橫排的元素
theDF[2:4, ]
## First Second Sport
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
theDF[, c("First", "Sport")]
## First Sport
## 1 10 Handball
## 2 9 Football
## 3 8 Baseball
## 4 7 Sprint
## 5 6 Discus
## 6 5 Javelin
## 7 4 Basketball
## 8 3 Tennis
## 9 2 Volleyball
## 10 1 Soccer
# 只顯示"Sport"直排
# 只有單一個直排,所以回傳一個向量vector(且為因素,factor)
theDF[, "Sport"]
## [1] "Handball" "Football" "Baseball" "Sprint" "Discus"
## [6] "Javelin" "Basketball" "Tennis" "Volleyball" "Soccer"
class(theDF[, "Sport"])
## [1] "character"
# 只指定顯示"Sport"直排
# 回傳單一直排的data.frame
theDF["Sport"]
## Sport
## 1 Handball
## 2 Football
## 3 Baseball
## 4 Sprint
## 5 Discus
## 6 Javelin
## 7 Basketball
## 8 Tennis
## 9 Volleyball
## 10 Soccer
class(theDF["Sport"])
## [1] "data.frame"
# 只顯示"Sport"直排
# 此也vector(且為因素,factor)
theDF[["Sport"]]
## [1] "Handball" "Football" "Baseball" "Sprint" "Discus"
## [6] "Javelin" "Basketball" "Tennis" "Volleyball" "Soccer"
class(theDF[["Sport"]])
## [1] "character"
# 用 drop = FALSE 保證回傳的是單一行的 data.frame
theDF[, "Sport", drop = FALSE]
## Sport
## 1 Handball
## 2 Football
## 3 Baseball
## 4 Sprint
## 5 Discus
## 6 Javelin
## 7 Basketball
## 8 Tennis
## 9 Volleyball
## 10 Soccer
class(theDF[, "Sport", drop = FALSE])
## [1] "data.frame"
theDF[, 3, drop = FALSE]
## Sport
## 1 Handball
## 2 Football
## 3 Baseball
## 4 Sprint
## 5 Discus
## 6 Javelin
## 7 Basketball
## 8 Tennis
## 9 Volleyball
## 10 Soccer
class(theDF[, 3, drop = FALSE])
## [1] "data.frame"
list
# 建立一個五個元素的list
list(1, 2, 3, 4, 5)
## [[1]]
## [1] 1
##
## [[2]]
## [1] 2
##
## [[3]]
## [1] 3
##
## [[4]]
## [1] 4
##
## [[5]]
## [1] 5
# 建立一個元素的list,且其唯一元素為一個含有四個元素的vector
list(c(1, 2, 3 , 4))
## [[1]]
## [1] 1 2 3 4
# 建立兩個元素的list
# 第一個元素為含有五個元素的vector
# 第二個元素為含有五個元素的vector
(list3 <- list(c(1, 2, 3, 4, 5), 5:9))
## [[1]]
## [1] 1 2 3 4 5
##
## [[2]]
## [1] 5 6 7 8 9
# 兩個元素的list
# 第一元素為 data.frame
# 第二元素為含有10個元素的vector
list(theDF, 1:10)
## [[1]]
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
##
## [[2]]
## [1] 1 2 3 4 5 6 7 8 9 10
# 三個元素的list
# 第一個為data.frame
# 第二個為vector
# 第三個為含有兩個vector的list,名為list3
list5 <- list(theDF, 1:10, list3)
list5
## [[1]]
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
##
## [[2]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[3]]
## [[3]][[1]]
## [1] 1 2 3 4 5
##
## [[3]][[2]]
## [1] 5 6 7 8 9
names(list5)
## NULL
names(list5) <- c("data.frame", "vector", "list") # list 可以被命名
names(list5)
## [1] "data.frame" "vector" "list"
list5
## $data.frame
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
##
## $vector
## [1] 1 2 3 4 5 6 7 8 9 10
##
## $list
## $list[[1]]
## [1] 1 2 3 4 5
##
## $list[[2]]
## [1] 5 6 7 8 9
# 亦可在建立list時以"名稱-值"的形式指派元素的名字
list6 <- list(TheDataFrame = theDF, TheVector = 1:10, TheList = list3)
names(list6)
## [1] "TheDataFrame" "TheVector" "TheList"
list6
## $TheDataFrame
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
##
## $TheVector
## [1] 1 2 3 4 5 6 7 8 9 10
##
## $TheList
## $TheList[[1]]
## [1] 1 2 3 4 5
##
## $TheList[[2]]
## [1] 5 6 7 8 9
# 可以用vector來建立某長度的空list(勿與之前vector的用法混淆)
(emptyList <- vector(mode = "list", length = 4))
## [[1]]
## NULL
##
## [[2]]
## NULL
##
## [[3]]
## NULL
##
## [[4]]
## NULL
# 查詢list中的單一元素可用雙中括號,並指定要查詢元素所對應的號碼(位置或索引)或名稱
list5[[1]]
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
list5[["data.frame"]]
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
# 以上述方式查詢到的元素可當作一般元素使用,透過巢狀索引(nested indexing)的標示方式,進一步查其中的元素
list5[[1]]$Sport
## [1] "Handball" "Football" "Baseball" "Sprint" "Discus"
## [6] "Javelin" "Basketball" "Tennis" "Volleyball" "Soccer"
list5[[1]][, "Second"]
## [1] -4 -3 -2 -1 0 1 2 3 4 5
list5[[1]][, "Second", drop = FALSE]
## Second
## 1 -4
## 2 -3
## 3 -2
## 4 -1
## 5 0
## 6 1
## 7 2
## 8 3
## 9 4
## 10 5
# 勘查其長度
length(list5)
## [1] 3
# 附加第四個元素,並不給予名稱
list5[[4]] <- 2
length(list5)
## [1] 4
# 附加第五個元素,並給予名稱
list5[["NewElement"]] <- 3:6
length(list5)
## [1] 5
names(list5)
## [1] "data.frame" "vector" "list" "" "NewElement"
list5
## $data.frame
## First Second Sport
## 1 10 -4 Handball
## 2 9 -3 Football
## 3 8 -2 Baseball
## 4 7 -1 Sprint
## 5 6 0 Discus
## 6 5 1 Javelin
## 7 4 2 Basketball
## 8 3 3 Tennis
## 9 2 4 Volleyball
## 10 1 5 Soccer
##
## $vector
## [1] 1 2 3 4 5 6 7 8 9 10
##
## $list
## $list[[1]]
## [1] 1 2 3 4 5
##
## $list[[2]]
## [1] 5 6 7 8 9
##
##
## [[4]]
## [1] 2
##
## $NewElement
## [1] 3 4 5 6
array
(陣列,多維度的vector,元素必須皆為同一資料型態,可以是任何維度)
theArray <- array(1:12, dim = c(2, 3, 2))
theArray
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 7 9 11
## [2,] 8 10 12
theArray[1, , ]
## [,1] [,2]
## [1,] 1 7
## [2,] 3 9
## [3,] 5 11
theArray[1, , 1]
## [1] 1 3 5
theArray[, , 1]
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
theArray1 <- array(LETTERS[1:12], dim = c(2, 3, 2))
theArray1[2,3,2]
## [1] "L"
theArray1[2,2,2]
## [1] "J"
矩陣(元素必須皆為同一資料型態,最常見的是numeric,只有兩個維度)
# 建立一個5x2 matrix
A <- matrix(1:10, nrow = 5)
# 建立另一個5x2 matrix
B <- matrix(1:10, nrow = 5, byrow=T)
# 建立另一個2x10 matrix
C <- matrix(21:40, nrow = 2)
A
## [,1] [,2]
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
## [5,] 5 10
B
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
## [4,] 7 8
## [5,] 9 10
C
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 21 23 25 27 29 31 33 35 37 39
## [2,] 22 24 26 28 30 32 34 36 38 40
nrow(A)
## [1] 5
ncol(A)
## [1] 2
dim(A)
## [1] 5 2
# 把它們加起來
A + B
## [,1] [,2]
## [1,] 2 8
## [2,] 5 11
## [3,] 8 14
## [4,] 11 17
## [5,] 14 20
# 把它們互相乘起來(相對應元素相乘,非矩陣乘法)
A * B
## [,1] [,2]
## [1,] 1 12
## [2,] 6 28
## [3,] 15 48
## [4,] 28 72
## [5,] 45 100
# 勘查元素是否一樣
A == B
## [,1] [,2]
## [1,] TRUE FALSE
## [2,] FALSE FALSE
## [3,] FALSE FALSE
## [4,] FALSE FALSE
## [5,] FALSE TRUE
# 矩陣的轉置
(t(B))
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
# 矩陣乘法 (B轉置後2x5,本例為5x2 %*% 2x5)
A %*% t(B)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 13 27 41 55 69
## [2,] 16 34 52 70 88
## [3,] 19 41 63 85 107
## [4,] 22 48 74 100 126
## [5,] 25 55 85 115 145
# 欄與列的命名
A
## [,1] [,2]
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
## [5,] 5 10
colnames(A)
## NULL
rownames(A)
## NULL
colnames(A) <- c("Left", "Right")
rownames(A) <- c("1st", "2nd", "3rd", "4th", "5th")
A
## Left Right
## 1st 1 6
## 2nd 2 7
## 3rd 3 8
## 4th 4 9
## 5th 5 10
B
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
## [4,] 7 8
## [5,] 9 10
colnames(B)
## NULL
rownames(B)
## NULL
colnames(B) <- c("First", "Second")
rownames(B) <- c("One", "Two", "Three", "Four", "Five")
B
## First Second
## One 1 2
## Two 3 4
## Three 5 6
## Four 7 8
## Five 9 10
C
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 21 23 25 27 29 31 33 35 37 39
## [2,] 22 24 26 28 30 32 34 36 38 40
colnames(C)
## NULL
rownames(C)
## NULL
colnames(C) <- LETTERS[1:10]
rownames(C) <- c("Top", "Bottom")
C
## A B C D E F G H I J
## Top 21 23 25 27 29 31 33 35 37 39
## Bottom 22 24 26 28 30 32 34 36 38 40
# 轉置和矩陣相乘對名稱的影響
A
## Left Right
## 1st 1 6
## 2nd 2 7
## 3rd 3 8
## 4th 4 9
## 5th 5 10
t(A)
## 1st 2nd 3rd 4th 5th
## Left 1 2 3 4 5
## Right 6 7 8 9 10
C
## A B C D E F G H I J
## Top 21 23 25 27 29 31 33 35 37 39
## Bottom 22 24 26 28 30 32 34 36 38 40
A %*% C
## A B C D E F G H I J
## 1st 153 167 181 195 209 223 237 251 265 279
## 2nd 196 214 232 250 268 286 304 322 340 358
## 3rd 239 261 283 305 327 349 371 393 415 437
## 4th 282 308 334 360 386 412 438 464 490 516
## 5th 325 355 385 415 445 475 505 535 565 595
# 較多元素矩陣乘法之範例
X<-matrix(1:100,nrow=10,byrow=T)
Y<-matrix(seq(from=-99, to=99, by=2) ,nrow=10)
X%*%Y
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] -4785 -3685 -2585 -1485 -385 715 1815 2915 4015 5115
## [2,] -13785 -10685 -7585 -4485 -1385 1715 4815 7915 11015 14115
## [3,] -22785 -17685 -12585 -7485 -2385 2715 7815 12915 18015 23115
## [4,] -31785 -24685 -17585 -10485 -3385 3715 10815 17915 25015 32115
## [5,] -40785 -31685 -22585 -13485 -4385 4715 13815 22915 32015 41115
## [6,] -49785 -38685 -27585 -16485 -5385 5715 16815 27915 39015 50115
## [7,] -58785 -45685 -32585 -19485 -6385 6715 19815 32915 46015 59115
## [8,] -67785 -52685 -37585 -22485 -7385 7715 22815 37915 53015 68115
## [9,] -76785 -59685 -42585 -25485 -8385 8715 25815 42915 60015 77115
## [10,] -85785 -66685 -47585 -28485 -9385 9715 28815 47915 67015 86115
# 求反矩陣
# solve(X) # 若為奇異矩陣,不存在反矩陣,故執行會出錯
det(X) # 求行列式
## [1] 3.49659e-113
W<-matrix(c(1,3,4,5,2,6,3,8,9),nrow=3)
W
## [,1] [,2] [,3]
## [1,] 1 5 3
## [2,] 3 2 8
## [3,] 4 6 9
det(W) # 求行列式
## [1] 25
solve(W) # 可求得反矩陣
## [,1] [,2] [,3]
## [1,] -1.2 -1.08 1.36
## [2,] 0.2 -0.12 0.04
## [3,] 0.4 0.56 -0.52