Następną funkcją opisową, którą wyjaśnimy, jest length(). Argumentem length() może być dowolny tryb obiektu. W przypadku obiektów atomowych length() zwraca liczbę elementów w obiekcie. W przypadku obiektów list, length() zwraca liczbę elementów najwyższego poziomu. W przypadku funkcji length() zwraca jeden. W przypadku wywołań length() zwraca liczbę argumentów wprowadzonych podczas tworzenia wywołania. W przypadku nazw length () zwraca jeden. W przypadku wyrażeń length () zwraca liczbę elementów w wyrażeniu. Oto kilka przykładów:
> mat=matrix(1:4,2,2)
> mat
[,1] [,2]
[1,] 1 3
[2,] 2 4
> length(mat)
[1] 4
> a.list=list(mat, c(“abc”,”cde”))
> a.list
[[1]]
[,1] [,2]
[1,] 1 3
[2,] 2 4
[[2]]
[1] “abc” “cde”
> length(a.list)
[1] 2
> a.fun = function(mu, se=1, alpha=.05){
z_value = qnorm(1-alpha/2, mu, se)
print(z_value)
}
> length(a.fun)
[1] 1
> a.call=call(“lm”, y~x)
> a.call
lm(y ~ x)
> length(a.call)
[1] 2
> a.name
`1`
> length(a.name)
[1] 1
> a.exp = expression(a.call, sin(1:5/180 * pi))
> a.exp
expression(a.call, sin(1:5/180 * pi))
> length(a.exp)
[1] 2
Długość obiektu atomowego lub listy można przypisać za pomocą funkcji length (). W przypadku innych obiektów trybu próba przypisania length () zwraca błąd. Jeśli n jest długością obiektu atomowego, to ustawienie długości na wartość większą niż n generuje NA dla dodatkowych elementów. Ustawienie długości mniejszej niż n usuwa dodatkowe elementy. W obu przypadkach a vector jest zwracany, chyba że długość nie zostanie zmieniona, w takim przypadku zwracany jest oryginalny obiekt. Oto przykład:
> mat
[,1] [,2]
[1,] 1 3
[2,] 2 4
> mat.2 = mat
> length(mat.2)=6
> mat.2
[1] 1 2 3 4 NA NA
> mat.2 = mat
> length(mat.2)=3
> mat.2
[1] 1 2 3
> mat.2 = mat
> length(mat.2)=4
> mat.2
[,1] [,2]
[1,] 1 3
[2,] 2 4
W przypadku obiektów listy trybów wydłużenie listy powoduje dodanie elementów NULL na najwyższym poziomie, a skrócenie listy powoduje usunięcie elementów na najwyższym poziomie. Oto przykład:
> a.list
[[1]]
cl1 cl2
[1,] 1 3
[2,] 2 4
[[2]]
[1] “abc” “cde”
> length(a.list)=4
> a.list
[[1]]
cl1 cl2
[1,] 1 3
[2,] 2 4
[[2]]
[1] “abc” “cde”
[[3]]
NULL
[[4]]
NULL
> length(a.list)=3
> a.list
[[1]]
cl1 cl2
[1,] 1 3
[2,] 2 4
[[2]]
[1] “abc” “cde”
[[3]]
NULL
Więcej informacji na temat length() można znaleźć, wpisując ?length w wierszu polecenia R.