complex 位於 base 包(package)。 說明
支持複雜算術的基本函數R,除了算術運算符+,-,*,/, 和^.
用法
complex(length.out = 0, real = numeric(), imaginary = numeric(),
        modulus = 1, argument = 0)
as.complex(x, ...)
is.complex(x)
Re(z)
Im(z)
Mod(z)
Arg(z)
Conj(z)
參數
| length.out | 數字。輸出向量的所需長度,根據需要回收輸入。 | 
| real | 數值向量。 | 
| imaginary | 數值向量。 | 
| modulus | 數值向量。 | 
| argument | 數值向量。 | 
| x | 一個對象,可能是  | 
| z | 模式  | 
| ... | 傳入或傳出其他方法的進一步參數。 | 
細節
可以使用 complex 創建複雜向量。可以通過給出向量的長度、實部和虛部或模數和參數來指定向量。 (僅給出長度就會生成一個由複數零組成的向量。)
as.complex嘗試將其參數強製為複雜類型:例如as.vector它會刪除包括名稱在內的屬性。取決於R版本 3.2.x,所有形式NA和NaN被脅迫到一個複雜的NA,即NA_complex_常數,其實部和虛部均為NA.自從R3.3.0,通常僅是以下對象NA部分被強製複雜化NA,但其他人與NaN零件,是不是。因此,複雜的算術僅NaN的(但沒有NA的)通常會涉及不是給出複雜的NA但具有實部或虛部的複數NaN.
請注意, is.complex 和 is.numeric 永遠不會同時是 TRUE 。
函數 Re 、 Im 、 Mod 、 Arg 和 Conj 具有通常的解釋,即返回複數值的實部、虛部、模數、自變量和複共軛。模數和參數也稱為極坐標。如果  與實數  和  ,則為  和  、  和  。它們都是 internal generic primitive 函數:可以單獨為它們定義方法,也可以通過 Complex 組泛型定義方法。
除了算術運算符(參見 Arithmetic )、+ 、 - 、 * 、 / 和 ^ 之外,還為複數實現了初等三角函數、對數函數、指數函數、平方根函數和雙曲函數。值。
矩陣乘法( %*% 、 crossprod 、 tcrossprod )也為複數矩陣( matrix )定義,solve 、 eigen 或 svd 也是如此。
在內部,複數存儲為一對 double 精度數,其中一個或兩個可以是 NaN (包括 NA ,請參閱 NA_complex_ 及以上)或正負無窮大。
S4方法
as.complex 是原始的,可以設置 S4 方法。
Re、Im、Mod、Arg 和 Conj 構成 S4 組通用 Complex,因此可以單獨或通過組通用為它們設置 S4 方法。
注意
涉及複雜的操作和函數NaN主要依賴於 C 庫對‘的處理雙重複合體’ 算術,通常返回complex(re=NaN, im=NaN)(但我們還沒有看到對此的保證)。為了+和-,R自己的處理工作嚴格“coordinate wise”。
涉及複雜 NA 的操作,即 NA_complex_ ,返回 NA_complex_ 。
例子
require(graphics)
0i ^ (-3:3)
matrix(1i^ (-6:5), nrow = 4) #- all columns are the same
0 ^ 1i # a complex NaN
## create a complex normal vector
z <- complex(real = stats::rnorm(100), imaginary = stats::rnorm(100))
## or also (less efficiently):
z2 <- 1:2 + 1i*(8:9)
## The Arg(.) is an angle:
zz <- (rep(1:4, length.out = 9) + 1i*(9:1))/10
zz.shift <- complex(modulus = Mod(zz), argument = Arg(zz) + pi)
plot(zz, xlim = c(-1,1), ylim = c(-1,1), col = "red", asp = 1,
     main = expression(paste("Rotation by "," ", pi == 180^o)))
abline(h = 0, v = 0, col = "blue", lty = 3)
points(zz.shift, col = "orange")
## as.complex(<some NA>) --> NA_complex_
NAs <- vapply(list(NA, NA_integer_, NA_character_, NA_real_, NA_complex_),
              as.complex, 0+0i)
stopifnot(identical(NA_complex_, unique(NAs)))
showC <- function(z) noquote(sprintf("(R = %g, I = %g)", Re(z), Im(z)))
## The exact result of this *depends* on the platform, compiler, math-library:
(NpNA <- NaN + NA_complex_) ; str(NpNA) # *behaves* as 'cplx NA' ..
stopifnot(is.na(NpNA), is.na(NA_complex_), is.na(Re(NA_complex_)), is.na(Im(NA_complex_)))
showC(NpNA)# but does not always show '(R = NaN, I = NA)'
## and this is not TRUE everywhere:
identical(NpNA, NA_complex_)
showC(NA_complex_) # always == (R = NA, I = NA)
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
Arithmetic; polyroot 查找  次多項式的所有  複數根。
相關用法
- R comment 查詢或設置“評論”屬性
- R commandArgs 提取命令行參數
- R col 列索引
- R conditions 狀況處理和恢複
- R connections 操作連接的函數(文件、URL...)
- R colSums 形成行和列的總和及平均值
- R conflicts 在搜索路徑上搜索被遮罩的對象
- R colnames 行和列名稱
- R chartr 字符翻譯和裝箱
- R chol2inv Cholesky(或 QR)分解的逆分解
- R cumsum 累積和、乘積和極值
- R character 字符向量
- R c 將值組合到向量或列表中
- R cut 將數字轉換為因子
- R class 對象類
- R chooseOpsMethod 選擇適當的操作方法
- R chol 喬列斯基分解
- R cbind 按行或列組合 R 對象
- R crossprod 矩陣叉積
- R curlGetHeaders 從 URL 中檢索標頭
- R cat 連接並打印
- R capabilities 此 R 版本的報告函數
- R callCC 調用當前延續
- R call 函數調用
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Complex Numbers and Basic Functionality。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
