Extract or Replace Parts of a Data Frame

Extract or replace subsets of data frames.

# S3 method for data.frame
[(x, i, j, drop = )
# S3 method for data.frame
[(x, i, j) <- value
# S3 method for data.frame
[[(x, ..., exact = TRUE)
# S3 method for data.frame
[[(x, i, j) <- value
# S3 method for data.frame
$(x, name)
# S3 method for data.frame
$(x, name) <- value

data frame.

i, j, ...









logical: see [, and applies to column names.

























See Also

subset which is often easier for extraction, data.frame, Extract.

  • [.data.frame
  • [[.data.frame
  • [<-.data.frame
  • [[<-.data.frame
  • $.data.frame
  • $<-.data.frame
library(base) # NOT RUN { sw <- swiss[1:5, 1:4] # select a manageable subset sw[1:3] # select columns sw[, 1:3] # same sw[4:5, 1:3] # select rows and columns sw[1] # a one-column data frame sw[, 1, drop = FALSE] # the same sw[, 1] # a (unnamed) vector sw[[1]] # the same sw[1,] # a one-row data frame sw[1,, drop = TRUE] # a list sw["C", ] # partially matches sw[match("C", row.names(sw)), ] # no exact match try(sw[, "Ferti"]) # column names must match exactly # } # NOT RUN { swiss[ c(1, 1:2), ] # duplicate row, unique row names are created sw[sw <= 6] <- 6 # logical matrix indexing sw ## adding a column sw["new1"] <- LETTERS[1:5] # adds a character column sw[["new2"]] <- letters[1:5] # ditto sw[, "new3"] <- LETTERS[1:5] # ditto sw$new4 <- 1:5 sapply(sw, class) sw$new4 <- NULL # delete the column sw sw[6:8] <- list(letters[10:14], NULL, aa = 1:5) # update col. 6, delete 7, append sw ## matrices in a data frame A <- data.frame(x = 1:3, y = I(matrix(4:9, 3, 2)), z = I(matrix(letters[1:9], 3, 3))) A[1:3, "y"] # a matrix A[1:3, "z"] # a matrix A[, "y"] # a matrix stopifnot(identical(colnames(A), c("x", "y", "z")), ncol(A) == 3L, identical(A[,"y"], A[1:3, "y"]), inherits (A[,"y"], "AsIs")) ## keeping special attributes: use a class with a ## "as.data.frame" and "[" method; ## "avector" := vector that keeps attributes. Could provide a constructor ## avector <- function(x) { class(x) <- c("avector", class(x)); x } as.data.frame.avector <- as.data.frame.vector `[.avector` <- function(x,i,...) { r <- NextMethod("[") mostattributes(r) <- attributes(x) r } d <- data.frame(i = 0:7, f = gl(2,4), u = structure(11:18, unit = "kg", class = "avector")) str(d[2:4, -1]) # 'u' keeps its "unit" # }

Community examples

Looks like there are no examples yet.