當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R data.frame DataFrame


R語言 data.frame 位於 base 包(package)。

說明

函數data.frame()創建 DataFrame ,緊密耦合的變量集合,它們共享矩陣和列表的許多屬性,被大多數人用作基本數據結構R的建模軟件。

用法

data.frame(..., row.names = NULL, check.rows = FALSE,
           check.names = TRUE, fix.empty.names = TRUE,
           stringsAsFactors = FALSE)

參數

...

這些參數的形式為 valuetag = value 。組件名稱是根據標簽(如果存在)或解析的參數本身創建的。

row.names

NULL 或指定用作行名稱的列的單個整數或字符串,或者給出 DataFrame 的行名稱的字符或整數向量。

check.rows

如果TRUE,則檢查行的長度和名稱的一致性。

check.names

合乎邏輯的。如果TRUE,則檢查 DataFrame 中的變量名稱以確保它們是語法上有效的變量名稱並且不重複。如果有必要的話,它們會被調整(通過 make.names ),這樣它們就可以了。

fix.empty.names

邏輯指示參數 “unnamed” (在沒有正式稱為 someName = arg 的意義上)是否獲得自動構造的名稱或名稱 "" 。如果應保留 "" 名稱,即使 check.names 為 false,也需要設置為 FALSE

stringsAsFactors

邏輯:字符向量應該轉換為因子嗎? ‘factory-fresh’默認值是TRUE以前但已更改為FALSE為了R4.0.0。

細節

DataFrame 是具有相同行數且具有唯一行名稱的變量列表,給定類 "data.frame" 。如果不包含變量,則行名稱決定行數。

列名稱不應為空,嘗試使用空名稱將產生不受支持的結果。允許重複的列名,但您需要使用 check.names = FALSE for data.frame 來生成這樣的 DataFrame 。但是,並非數據幀上的所有操作都會保留重複的列名稱:例如,類似矩陣的子集將強製結果中的列名稱是唯一的。

data.frame通過調用將其每個參數轉換為 DataFrame as.data.frame(optional = TRUE)。由於這是一個通用函數,因此可以編寫方法來根據參數的類更改參數的行為:R有很多這樣的方法。傳遞給的字符變量data.frame如果不受保護,則轉換為因子列I和論證stringsAsFactors是真的。如果將列表或 DataFrame 或矩陣傳遞給data.frame就好像每個組件或列都作為單獨的參數傳遞(受保護的矩陣除外)I)。

傳遞給 data.frame 的對象應具有相同的行數,但原子向量(請參閱 is.vector )、受 I 保護的因子和字符向量將在必要時被回收整數次(包括作為列表參數的元素) )。

如果在對 data.frame 的調用中未提供行名稱,則行名稱將從具有合適名稱的第一個組件中獲取,例如命名向量或具有行名稱的矩陣或 DataFrame 。 (如果該組件隨後被回收,則名稱將被丟棄並帶有警告。)如果 row.names 作為 NULL 提供,或者未找到合適的組件,則行名稱是從 1 開始的整數序列(並且此類行名稱被視為為 ‘automatic’,並且不被 as.matrix 保留)。

如果提供的行名稱長度為 1 並且數據幀隻有一行,則使用 row.names 來指定行名稱而不是列(按名稱或編號)。

名稱將從不受 I 保護的向量輸入中刪除。

DataFrame ,一種類似矩陣的結構,其列可以是不同類型(數字、邏輯、因子和字符等)。

DataFrame 的名稱是如何創建的很複雜,本段的其餘部分隻是基本的故事。如果參數都是命名的簡單對象(不是列表、 DataFrame 矩陣),則參數名稱給出列名稱。對於未命名的簡單參數,參數的解析版本用作名稱(刪除了封閉的 I(...))。對於具有多個命名列的命名矩陣/列表/ DataFrame 參數,列的名稱是參數名稱後跟一個點和參數內的列名稱:如果參數未命名,則為參數的列名稱被使用。對於包含單個列的命名或未命名矩陣/列表/ DataFrame 參數,結果中的列名稱是參數中的列名稱。最後,名稱被調整為唯一且語法有效,除非 check.names = FALSE

注意

在以下版本中R2.4.0之前row.names必須是字符:以確保與此類版本的兼容性R,提供一個字符向量作為row.names爭論。

例子

L3 <- LETTERS[1:3]
char <- sample(L3, 10, replace = TRUE)
(d <- data.frame(x = 1, y = 1:10, char = char))
## The "same" with automatic column names:
data.frame(1, 1:10, sample(L3, 10, replace = TRUE))

is.data.frame(d)

## enable automatic conversion of character arguments to factor columns:
(dd <- data.frame(d, fac = letters[1:10], stringsAsFactors = TRUE))
rbind(class = sapply(dd, class), mode = sapply(dd, mode))

stopifnot(1:10 == row.names(d))  # {coercion}

(d0  <- d[, FALSE])   # data frame with 0 columns and 10 rows
(d.0 <- d[FALSE, ])   # <0 rows> data frame  (3 named cols)
(d00 <- d0[FALSE, ])  # data frame with 0 columns and 0 rows

參考

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

也可以看看

Iplot.data.frameprint.data.framerow.namesnames (用於列名稱)、[.data.frame 用於子集方法和 I(matrix(..)) 示例; Math.data.frame 等,關於 data.frame 的 Group 方法; read.tablemake.nameslist2DF 用於從變量列表創建 DataFrame 。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Data Frames。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。