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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
