列表和數據框
list()
#創建列表
month.abb
#列出12月名稱的簡寫
names()
#列表元素命名
** 原子變量 遞歸變量 **
is.atomic()
#測試是否屬于原子變量
is.recursive()
測試是否屬于遞歸變量
** 列表的維度和算術運算**
- 列表沒有維度
- 列表的長度是頂層元素的數目
- 算術運算對列表不起作用
** 索引列表 **
- 方括號,正或負的下標,元素名稱或邏輯索引 結果是一個列表
- 雙方括號傳入整數或者指定該元素的名稱字符串 結果是列表的元素
- 對于列表的命名元素,可以使用美元符號$
- 可以通過嵌套方括號或傳入向量來訪問嵌套元素
** 向量和列表之間的轉換 **
as.list()
#轉換為列表
unlist()
#轉換混合列表為向量
** 組合列表 **
c()
#拼接列表,拼接列表和向量,向量自動轉換為列表
cbind() rbind()
#盡量不用
NULL
#空的變量 創建列表時可能會想指定一個元素,表明它必須存在但沒有賦值。
NA
一個標量值;
NULL
長度為零不占用任何空間
*要刪除列表中的元素,把元素設置為NULL就會刪除它 *
is.null()
#測試是否為NULL值
list(NULL)
#將現有元素設置為NULL值
** 成對列表 **
formals()
#返回一個函數參數的成對列表
成對列表與列表的區別:長度為0的成對的列表為NULL,長度為0的列表是一個空列表。
** data.frame() ** #創建數據框
- 數據框每列的類型可與其他列不同,但同一列的元素類型必須相同
- 行自動編號,如果輸入的任何向量有名稱,行名稱取自第一個向量名稱,這種命名規則可以傳入row.names = NULL 覆蓋掉
- 還可以通過給row.names傳入一個向量來為每行命名
- 默認情況下列名必須是唯一且有效的變量名稱,此功能可以通過參數check.names = FALSE來關閉
rownames()
colnames()
dimnames()
nrow()
ncol()
dim()
** 索引數據框 **
- 方括號里分別對行和列使用正整數、負整數、邏輯值和字符
- 只選擇一列,帶有正整數或名稱的雙方括號或帶有名稱的美元符號
subset()
#獲取數據框子集,三個參數(數據框,行的條件邏輯向量,保留的名字向量),直接鍵入行列名稱
cbind()
rbind()
merge()
#根據兩個數據框相同的列時合并,by參數指定共享列
如果數據框只包含數值,可以使用colSums colMeans rowSums
rowMeans函數