Extract.data.frame
位於 base
包(package)。 說明
提取或替換數據幀的子集。
用法
## S3 method for class 'data.frame'
x[i, j, drop = ]
## S3 replacement method for class 'data.frame'
x[i, j] <- value
## S3 method for class 'data.frame'
x[[..., exact = TRUE]]
## S3 replacement method for class 'data.frame'
x[[i, j]] <- value
## S3 replacement method for class 'data.frame'
x$name <- value
參數
x |
DataFrame 。 |
i, j, ... |
要提取或替換的元素。對於 |
name |
|
drop |
合乎邏輯的。如果 |
value |
合適的替換值:如有必要,它將重複多次,並且可能會被強製:請參閱強製部分。如果是 |
exact |
邏輯:請參閱 |
細節
數據幀可以通過多種模式進行索引。當 [
和 [[
與單個向量索引( x[i]
或 x[[i]]
)一起使用時,它們會像列表一樣對數據幀進行索引。在此用法中,drop
參數將被忽略,並出現警告。
$
沒有 data.frame
方法,因此 x$name
使用默認方法,將 x
視為列表(如果匹配唯一,則部分匹配列名,請參閱 Extract
)。替換方法(針對 $
)檢查 value
的行數是否正確,並在必要時進行複製。
當 [
和 [[
與兩個索引( x[i, j]
和 x[[i, j]]
)一起使用時,它們的作用類似於索引矩陣:[[
隻能用於選擇一個元素。請注意,對於每個選定的列,例如xj
(如果不是類似矩陣),結果列將為xj[i]
,因此依賴於相應的[
方法,請參閱示例部分。
如果 [
返回一個數據幀,它將具有唯一(且非缺失)的行名稱,如有必要,請使用 make.unique
轉換行名稱。同樣,如果選擇了列,則如有必要,列名稱將轉換為唯一的(例如,如果多次選擇列,或者如果 DataFrame 具有重複的列名稱,則選擇給定名稱的多個列)。
當 drop = TRUE
時,這適用於數據幀中包含的任何矩陣的子集以及數據幀本身。
替換方法可用於通過指定不存在的列來添加整個列,在這種情況下,列將添加到 DataFrame 的右側邊,並且數字索引必須與現有指數。另一方麵,可以在當前最後一行之後的任何行添加行,並且列將是帶有缺失值的in-filled。索引中的缺失值不允許替換。
對於[
,替換值可以是一個列表:列表的每個元素用於替換(部分)一列,並根據需要回收列表。如果創建了按編號指定的列,則使用相應列表元素的名稱(如果有)來命名這些列。如果替換不是選擇行,則列表值可以包含 NULL
元素,這將導致相應的列被刪除。 (參見示例。)
不建議使用 [
進行矩陣索引(帶有邏輯或 2 列整數矩陣的 x[i]
i
)。為了進行提取,x
首先被強製轉換為矩陣。對於替換,邏輯矩陣索引必須與 x
具有相同的維度。一次替換一列,可能會發生多種類型強製。
[
和 [[
提取方法都部分匹配行名稱。默認情況下,兩者都不會部分匹配列名稱,但如果 exact = FALSE
則 [[
會部分匹配(如果 exact =
NA
則會出現警告)。如果您想精確匹配行名稱,請使用 match
,如示例中所示。
值
對於[
DataFrame 、列表或單列(後兩者僅在維度被刪除時)。如果使用矩陣索引來提取向量結果。如果結果是數據幀,則如果選擇未定義的列,則會出現錯誤(因為數據幀中沒有 'missing' 列的一般概念)。否則,如果選擇單個列並且未定義,則結果為 NULL
。
對於[[
數據幀的一列或NULL
(使用一個索引提取)或長度為一的向量(使用兩個索引提取)。
對於 $
,數據幀的列(或 NULL
)。
對於 [<-
、 [[<-
和 $<-
,一個數據幀。
強迫
強製重置值的情況是一個複雜的情況,並且在R的發展。本節僅供參考。
當 [
和 [[
用於添加或替換整個列時,不會發生強製轉換,但如果精確的重複次數可以將 value
複製(通過調用通用函數 rep
)到正確的長度使用。
當 [
與邏輯矩陣一起使用時,每個值都被強製為其要放入的列的類型。
當 [
和 [[
與兩個索引一起使用時,將根據需要強製列以容納該值。
請注意,當替換值是數組(包括矩陣)時,它不會被視為一係列列(如 data.frame
和 as.data.frame
那樣),而是作為單個列插入。
警告
僅剩一行時的默認行為相當於指定 drop = FALSE
。要從 DataFrame 刪除到列表,必須顯式指定drop = TRUE
。
不應命名 drop
和 exact
以外的參數:如果命名,則會出現警告,並且行為與此處的說明不同。
例子
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$Fert # the same (possibly w/ warning, see ?Extract)
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
sw[sw$Fertility > 90,] # logical indexing, see also ?subset
sw[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$new # -> NULL: no unique partial match
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"
也可以看看
subset
通常更容易提取, data.frame
、 Extract
。
相關用法
- R Extract.factor 提取或替換部分因子
- R Extract 提取或替換對象的部分
- R Extremes 最大值和最小值
- R Encoding 讀取或設置字符向量聲明的編碼
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 將文本推回連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R invisible 將打印模式更改為不可見
- R noquote “無引號”字符串打印類
- R warning 警告信息
- R rapply 遞歸地將函數應用於列表
- R basename 操作文件路徑
- R with 評估數據環境中的表達式
- R formals 訪問和操縱形式參數
- R icuSetCollate 按 ICU 設置整理
- R search 給出 R 對象的搜索路徑
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Extract or Replace Parts of a Data Frame。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。