zoukankan      html  css  js  c++  java
  • R Programming week1-Subsetting

    Subsetting

    There are a number of operators that can be used to extract subsets of R objects.

    [ always returns an object of the same class as the original; can be used to select more than one

    element (there is one exception)

    [[ is used to extract elements of a list or a data frame; it can only be used to extract a single

    element and the class of the returned object will not necessarily be a list or data frame

    $ is used to extract elements of a list or data frame by name; semantics are similar to that of [[.

    > x <- c("a", "b", "c", "c", "d", "a")

    > x[1]

    [1] "a"

    > x[2]

    [1] "b"

    > x[1:4]

    [1] "a" "b" "c" "c"

    > x[x > "a"]

    [1] "b" "c" "c" "d"

    > u <- x > "a"

    > u

    [1] FALSE TRUE TRUE TRUE TRUE FALSE

    > x[u]

    [1] "b" "c" "c" "d"

    Subsetting Lists

    > x <- list(foo = 1:4, bar = 0.6)

    > x[1]

    $foo

    [1] 1 2 3 4

    > x[[1]]

    [1] 1 2 3 4

    > x$bar

    [1] 0.6

    > x[["bar"]]

    [1] 0.6

    > x["bar"]

    $bar

    [1] 0.6

    > x <- list(foo = 1:4, bar = 0.6, baz = "hello")

    > x[c(1, 3)]

    $foo

    [1] 1 2 3 4

    $baz

    [1] "hello"

    The [[ operator can be used with computed indices; $ can only be used with literal names.

    > x <- list(foo = 1:4, bar = 0.6, baz = "hello")

    > name <- "foo"

    > x[[name]] ## computed index for ‘foo’

    [1] 1 2 3 4

    > x$name ## element ‘name’ doesn’t exist!

    NULL

    > x$foo

    [1] 1 2 3 4 ## element ‘foo’ does exist

    Subsetting Nested Elements of a List

    The [[ can take an integer sequence

    > x <- list(a = list(10, 12, 14), b = c(3.14, 2.81))

    > x[[c(1, 3)]]

    [1] 14

    > x[[1]][[3]]

    [1] 14

    > x[[c(2, 1)]]

    [1] 3.14

    Subsetting a Matrix

    Matrices can be subsetted in the usual way with (i,j) type indices.

    > x <- matrix(1:6, 2, 3)

    > x[1, 2]

    [1] 3

    > x[2, 1]

    [1] 2

    Indices can also be missing.

    > x[1, ]

    [1] 1 3 5

    > x[, 2]

    [1] 3 4

    By default, when a single element of a matrix is retrieved, it is returned as a vector of length 1 rather than a 1 × 1 matrix. This behavior can be turned off by setting drop = FALSE.

    > x <- matrix(1:6, 2, 3)

    > x[1, 2]

    [1] 3

    > x[1, 2, drop = FALSE]

     [,1]

    [1,] 3

    Similarly, subsetting a single column or a single row will give you a vector, not a matrix (by default).

    > x <- matrix(1:6, 2, 3)

    > x[1, ]

    [1] 1 3 5

    > x[1, , drop = FALSE]

     [,1] [,2] [,3]

    [1,] 1 3 5

    Partial Matching

    Partial matching of names is allowed with [[ and $.

    > x <- list(aardvark = 1:5)

    > x$a

    [1] 1 2 3 4 5

    > x[["a"]]

    NULL

    > x[["a", exact = FALSE]]

    [1] 1 2 3 4 5

    Removing NA Values

    A common task is to remove missing values (NAs).

    > x <- c(1, 2, NA, 4, NA, 5)

    > bad <- is.na(x)

    > x[!bad]

    [1] 1 2 4 5

    What if there are multiple things and you want to take the subset with no missing values?

    > x <- c(1, 2, NA, 4, NA, 5)

    > y <- c("a", "b", NA, "d", NA, "f")

    > good <- complete.cases(x, y)

    > good

    [1] TRUE TRUE FALSE TRUE FALSE TRUE

    > x[good]

    [1] 1 2 4 5

    > y[good]

    [1] "a" "b" "d" "f"

     

    > airquality[1:6, ]

     Ozone Solar.R Wind Temp Month Day

    1 41 190 7.4 67 5 1

    2 36 118 8.0 72 5 2

    3 12 149 12.6 74 5 3

    4 18 313 11.5 62 5 4

    5 NA NA 14.3 56 5 5

    6 28 NA 14.9 66 5 6

    > good <- complete.cases(airquality)

    > airquality[good, ][1:6, ]

     Ozone Solar.R Wind Temp Month Day

    1 41 190 7.4 67 5 1

    2 36 118 8.0 72 5 2

    3 12 149 12.6 74 5 3

    4 18 313 11.5 62 5 4

    7 23 299 8.6 65 5 7

  • 相关阅读:
    一起来构建前端工具链吧~(新建项目)
    我的前端故事----高仿支付宝密码输入框
    我的前端故事----疯狂倒计时(requestAnimationFrame)
    Oracle 导入导出SQL 查看登录用户表个数
    Oracle11g使用exp导出空表
    Spring Boot(二)Application events and listeners
    Spring Boot(一)启动方式
    Android BroadcastReceiver
    钱格式化
    Intellij idea 快键键
  • 原文地址:https://www.cnblogs.com/jpld/p/4434320.html
Copyright © 2011-2022 走看看