Tryb complex to tryb liczb zespolonych. Liczby zespolone można tworzyć za pomocą metody complex() lub po prostu wpisując liczby po znaku zachęty R. Na przykład:
> a = complex(real=1:5, imaginary=6:10)
> a
[1] 1+ 6i 2+ 7i 3+ 8i 4+ 9i 5+10i
> a = 1:5 + 1i*6:10
> a
[1] 1+ 6i 2+ 7i 3+ 8i 4+ 9i 5+10i
Zauważ, że dla liczb zespolonych zawsze przed i znajduje się liczba bez operatora, co informuje R, że i jest urojonym pierwiastkiem minus jeden. Dla funkcji complex() argument o wartości zero lub brak argumentu zwraca wartość complex(0), pusty zestaw trybów złożonych i długość zero. Jeśli argument jest pojedynczą liczbą dodatnią, funkcja complex() zwraca wektor złożonych zer o długości liczby zaokrąglonej w dół do liczby całkowitej. Jeśli argument składa się z obiektu numerycznego z więcej niż jednym elementem lub jeśli argument jest logiczny z jednym elementem lub więcej niż jednym elementem, używany jest tylko pierwszy element argumentu, gdzie dla obiektów logicznych wartość FALSE jest zerowana, a TRUE to jeden. Funkcja complex() przyjmuje również argumenty rzeczywiste i urojone lub moduł i argument. Argumenty rzeczywiste i urojone lub moduł i argument można ustawić równe dowolnemu obiektowi numerycznemu lub logicznemu. Obiekty nie muszą być tej samej długości i będą się cyklicznie poruszać. Argumenty rzeczywiste i urojone to rzeczywiste i urojone części liczb, podczas gdy moduł argumentów i argument są biegunowymi współrzędnymi liczb, z modułem równym długościom liczb i argumentem równym kątom powyżej osi x liczb w radianach. Liczby trybów raw mogą być użyte do prawdziwych i wymyślonych argumentów i woli zostać zmienione na podwójną precyzję, ale nie można ich użyć do modułów argumentu argumentów. W przypadku pary rzeczywistej i urojonej można pominąć jedną z nich, a pominięty argument zostanie ustawiony na zero. W przypadku modułu i pary argumentów, jeżeli moduł zostanie pominięty, wartość modułu zostanie ustawiona na jeden, a jeśli argument zostanie pominięty, wartość argumentu zostanie ustawiona na zero. Niektóre przykłady funkcji complex() obejmują:
> complex(real=c(T,F), imaginary=1:5+0.5)
[1] 1+1.5i 0+2.5i 1+3.5i 0+4.5i 1+5.5i
> complex(modulus=c(1,2), argument=pi/4)
[1] 0.7071068+0.7071068i 1.4142136+1.4142136i
> as.raw(27:30)
[1] 1b 1c 1d 1e
> complex(real=as.raw(27:30))
[1] 27+0i 28+0i 29+0i 30+0i
> complex(ima=as.raw(27:30))
[1] 0+27i 0+28i 0+29i 0+30i
> complex(mod=as.raw(27:30))
Error in rep_len(modulus, n) * exp((0+1i) * rep_len(argument, n)) :
non-numeric argument to binary operator
> complex(mod=3:5)
[1] 3+0i 4+0i 5+0i
> complex(arg=3:5*pi/180)
[1] 0.9986295+0.0523360i 0.9975641+0.0697565i 0.9961947+0.0871557i
Funkcja as.complex () spróbuje zmusić obiekt do przejścia w tryb złożony. Jeśli obiekt może być wymuszony na wartości numeryczne (tryby atomowe), ale nie jest złożony, to wynikiem jest złożony obiekt z wymuszonym argumentem jako częścią rzeczywistą i zerami dla części urojonej, z wyjątkiem NA, które są zwracane po prostu jako NA. W trybach nieatomowych as.complex() zwraca błąd. Funkcja is.complex() sprawdza, czy argumentem funkcji jest tryb złożony. Funkcja zwraca TRUE, jeśli argumentem jest tryb złożony, w przeciwnym razie FALSE. Więcej informacji na temat trybu złożonego można znaleźć, wprowadzając ?complex po znaku zachęty R.