numeric(4)[1] 0 0 0 0character(3)[1] "" "" ""logical(5)[1] FALSE FALSE FALSE FALSE FALSENumeric vectors
(age <- c(18, 20, 30, 24, 23, 21))[1] 18 20 30 24 23 21addAge <- c(27, 21, 19)
(ageNew <- c(age, addAge))[1] 18 20 30 24 23 21 27 21 19append(age, c(17, 31))[1] 18 20 30 24 23 21 17 31Character vectors
charVec1 <- c("Z", "Y", "X")
(charVec2 <- c(charVec1, "T", "S", "R"))[1] "Z" "Y" "X" "T" "S" "R"LETTERS[c(1, 2, 3)][1] "A" "B" "C"letters[c(5, 9, 13)][1] "e" "i" "m"(chars <- c("ipsum", "dolor", "sit"))[1] "ipsum" "dolor" "sit" Information about vectors
length(age)[1] 6length(chars)[1] 3nchar(chars)[1] 5 5 3age[4][1] 24age[4] <- 22
age[1] 18 20 30 22 23 21Get and change the last element
(ageLast <- age[length(age)])[1] 21age[length(age) + 1][1] NAA vector does not need a name for getting one of its values
c(11, 12, 13, 14)[2][1] 12Get elements
idx <- c(1, 2, 4)
age[idx][1] 18 20 22age[c(3, 5, 6)][1] 30 23 21age[c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6)] [1] 18 18 20 20 30 30 22 22 23 23 21 21age[c(4, NA, 1)][1] 22 NA 18Change elements
age[idx] <- c(17, 30, 25)
age[1] 17 30 30 25 23 21age[-3][1] 17 30 25 23 21age[c(-1, -2, -4)][1] 30 23 21age[-c(1, 2, 4)][1] 30 23 21age[-idx][1] 30 23 21Also see help(Extract)
charVec4 <- "word"
numVec <- c(10, 20, 30)
(combVec <- c(charVec4, numVec))[1] "word" "10" "20" "30" mode(combVec)[1] "character"(namedVec1 <- c(elem1="first", elem2="second")) elem1 elem2
"first" "second" namedVec1["elem1"] elem1
"first" (namedVec2 <- c(val1=10, val2=-12, val3=33))val1 val2 val3
10 -12 33 names(namedVec2)[1] "val1" "val2" "val3"names(namedVec2) <- c("A", "B", "C")
namedVec2 A B C
10 -12 33 vec <- c(10, 20, 30, 40, 50)
vec <- vec[c(-4, -5)]
vec[1] 10 20 30vec <- c(1, 2, 3, 4, 5)
length(vec) <- 3
vec[1] 1 2 3age <- c(17, 30, 30, 24, 23, 21)
age < 24[1] TRUE FALSE FALSE FALSE TRUE TRUEx <- c(2, 4, 8)
y <- c(3, 4, 5)
x == y[1] FALSE TRUE FALSEx < y[1] TRUE FALSE FALSEInformation about elements satisfying some condition
res <- age > 30
any(res)[1] FALSEany(age < 18)[1] TRUEall(x == y)[1] FALSEres <- age < 24
sum(res)[1] 3which(age < 24)[1] 1 5 6length(which(age < 24))[1] 3Checking for equality of vectors
x <- c(4, 5, 6)
y <- c(4, 5, 6)
z <- c(1, 2, 3)
all.equal(x, y)[1] TRUEall.equal(y, z)[1] "Mean relative difference: 0.6"isTRUE(all.equal(y, z))[1] FALSE(age <= 20) | (age >= 30)[1] TRUE TRUE TRUE FALSE FALSE FALSE(age > 20) & (age < 30)[1] FALSE FALSE FALSE TRUE TRUE TRUEage[c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)][1] 17 30 24 21(idx <- (age <= 20) | (age >= 30))[1] TRUE TRUE TRUE FALSE FALSE FALSEage[idx][1] 17 30 30age[(age >= 30) | (age <= 20)][1] 17 30 30age[c(TRUE, FALSE)][1] 17 30 23age[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)][1] 17 30 23Problem:
vecNA <- c(-3, 2, 0, NA, -7, 5)
(logIdx <- vecNA > 0)[1] FALSE TRUE FALSE NA FALSE TRUEvecNA[logIdx][1] 2 NA 5Solution:
(numIdx <- which(logIdx))[1] 2 6vecNA[numIdx][1] 2 5seq(along=logIdx) %in% numIdx[1] FALSE TRUE FALSE FALSE FALSE TRUER markdown - markdown - R code - all posts