R 语言 向量

  • 向量

    向量是最基本的R数据对象,原子向量有六种类型。它们是逻辑,整数,双精度,复数,字符和原始。
  • 向量创建

    单元素向量
    即使仅在R中写入一个值,它也将成为长度为1的向量,并且属于上述向量类型之一。
     
    # Atomic vector of type character.
    print("abc");
    
    # Atomic vector of type double.
    print(12.5)
    
    # Atomic vector of type integer.
    print(63L)
    
    # Atomic vector of type logical.
    print(TRUE)
    
    # Atomic vector of type complex.
    print(2+3i)
    
    # Atomic vector of type raw.
    print(charToRaw('hello'))
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
     
    [1] "abc"
    [1] 12.5
    [1] 63
    [1] TRUE
    [1] 2+3i
    [1] 68 65 6c 6c 6f
    
    多种元素矢量
    对数字数据使用冒号运算符
     
    # Creating a sequence from 5 to 13.
    v <- 5:13
    print(v)
    
    # Creating a sequence from 6.6 to 12.6.
    v <- 6.6:12.6
    print(v)
    
    # If the final element specified does not belong to the sequence then it is discarded.
    v <- 3.8:11.4
    print(v)
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
     
    [1]  5  6  7  8  9 10 11 12 13
    [1]  6.6  7.6  8.6  9.6 10.6 11.6 12.6
    [1]  3.8  4.8  5.8  6.8  7.8  8.8  9.8 10.8
    
    使用序列(seq.)运算符
     
    # Create vector with elements from 5 to 9 incrementing by 0.4. 
    print(seq(5, 9, by = 0.4))
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
    
    [1] 5.0 5.4 5.8 6.2 6.6 7.0 7.4 7.8 8.2 8.6 9.0
    
    使用c() 函数
    如果元素之一是字符,则将非字符值强制转换为字符类型。
     
    # The logical and numeric values are converted to characters.
    s <- c('apple','red',5,TRUE)
    print(s)
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
    
    [1] "apple" "red"   "5"     "TRUE" 
    
  • 访问向量元素

    向量的元素可使用索引访问。的括号[]被用于索引。索引从位置1开始。如果索引中的值为负,则该元素将从结果中删除。TRUE,FALSE或0和1也可以用于索引。
     
    # Accessing vector elements using position.
    t <- c("Sun","Mon","Tue","Wed","Thurs","Fri","Sat")
    u <- t[c(2,3,6)]
    print(u)
    
    # Accessing vector elements using logical indexing.
    v <- t[c(TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)]
    print(v)
    
    # Accessing vector elements using negative indexing.
    x <- t[c(-2,-5)]
    print(x)
    
    # Accessing vector elements using 0/1 indexing.
    y <- t[c(0,0,0,0,0,0,1)]
    print(y)
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
     
    [1] "Mon" "Tue" "Fri"
    [1] "Sun" "Fri"
    [1] "Sun" "Tue" "Wed" "Fri" "Sat"
    [1] "Sun"
    
  • 向量操纵

    向量算术
    可以将两个相同长度的向量相加,相减,相乘或相除,从而将结果作为向量输出。
     
    # Create two vectors.
    v1 <- c(3,8,4,5,0,11)
    v2 <- c(4,11,0,8,1,2)
    
    # Vector addition.
    add.result <- v1+v2
    print(add.result)
    
    # Vector subtraction.
    sub.result <- v1-v2
    print(sub.result)
    
    # Vector multiplication.
    multi.result <- v1*v2
    print(multi.result)
    
    # Vector division.
    divi.result <- v1/v2
    print(divi.result)
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
     
    [1]  7 19  4 13  1 13
    [1] -1 -3  4 -3 -1  9
    [1] 12 88  0 40  0 22
    [1] 0.7500000 0.7272727       Inf 0.6250000 0.0000000 5.5000000
    
    向量元素回收
    如果我们对两个不等长的向量应用算术运算,则较短向量的元素将被回收以完成运算。
     
    v1 <- c(3,8,4,5,0,11)
    v2 <- c(4,11)
    # V2 becomes c(4,11,4,11,4,11)
    
    add.result <- v1+v2
    print(add.result)
    
    sub.result <- v1-v2
    print(sub.result)
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
     
    [1]  7 19  8 16  4 22
    [1] -1 -3  0 -6 -4  0
    
    向量元素排序
    向量中的元素可以使用sort()函数进行排序。
     
    v <- c(3,8,4,5,0,11, -9, 304)
    
    # Sort the elements of the vector.
    sort.result <- sort(v)
    print(sort.result)
    
    # Sort the elements in the reverse order.
    revsort.result <- sort(v, decreasing = TRUE)
    print(revsort.result)
    
    # Sorting character vectors.
    v <- c("Red","Blue","yellow","violet")
    sort.result <- sort(v)
    print(sort.result)
    
    # Sorting character vectors in reverse order.
    revsort.result <- sort(v, decreasing = TRUE)
    print(revsort.result)
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
     
    [1]  -9   0   3   4   5   8  11 304
    [1] 304  11   8   5   4   3   0  -9
    [1] "Blue"   "Red"    "violet" "yellow"
    [1] "yellow" "violet" "Red"    "Blue"