1.字符串
1.連接字符串 - paste()函數(shù)
- 語法說明
paste(var-1,var-2..., sep = " ", collapse = NULL)
- 參數(shù)解釋
var-1,var-2..., 表示要組合的任意數(shù)量的自變量
sep, 表示參數(shù)之間的任何分隔符。它是可選的
collapse, 用于消除兩個(gè)字符串之間的空格。 但不是一個(gè)字符串的兩個(gè)字內(nèi)的空間
2.格式化數(shù)字和字符串 - format()函數(shù)
- 語法說明
format(x, digits, nsmall, scientific, width, justify = c("left", "right", "centre", "none"))
- 參數(shù)解釋
x是向量輸入
digits是顯示的總位數(shù)
nsmall是小數(shù)點(diǎn)右邊的最小位數(shù)
scientific,設(shè)置為TRUE以顯示科學(xué)記數(shù)法
width指示通過在開始處填充空白來顯示的最小寬度
justify是字符串向左,右或中心的顯示。
3.提取字符串的一部分 - substring()函數(shù)
- 語法說明
substring(x,first,last)
- 參數(shù)解釋
x,是字符向量輸入
first,是要提取的第一個(gè)字符的位置
last,是要提取的最后一個(gè)字符的位置
2.向量
1.單元素向量
R語言中所有變量都以向量的方式儲(chǔ)存,所以單個(gè)輸入即為單元素向量
2.多元素向量
- 實(shí)現(xiàn)方式一:使用冒號(hào)
v <- 5:13
print(v)
[1] 5 6 7 8 9 10 11 12 13
- 實(shí)現(xiàn)方式二:使用Seq()函數(shù)
print(seq(5, 9, by = 0.4))
[1] 5.0 5.4 5.8 6.2 6.6 7.0 7.4 7.8 8.2 8.6 9.0
- 實(shí)現(xiàn)方式三:使用C()函數(shù)
s <- c('apple','red',5,TRUE)
print(s)
[1] "apple" "red" "5" "TRUE"
3.訪問向量元素
- 訪問向量元素時(shí),用[]建立索引,索引從"1"開始
代碼示例:
t = c(1,2,3,4,5,6,7,8,9)
a = t[2]
b = t[c(1,3)]
代碼輸出
[1] 2
[2] 1,3
- 索引中負(fù)值對(duì)應(yīng)元素會(huì)被丟棄
#代碼示例
c = t[-1,-5]
#代碼輸出
[1] 2,3,4,6,7,8,9
- 使用TRUE,F(xiàn)ALSE,0,1亦可建立索引
d = t[0,0,0,0,0,0,0,1]
[1] 9
4.向量操作
- 向量運(yùn)算:兩向量可以進(jìn)行加減乘除運(yùn)算,直接使用運(yùn)算符號(hào)即可(長(zhǎng)度不一樣的兩個(gè)向量運(yùn)算時(shí),較短的向量會(huì)被重復(fù)以達(dá)到相同長(zhǎng)度)
t = c(1,2,3,4,5,6)
q = c(1, 2)
#運(yùn)算時(shí) q = (1,2,1,2,1,2)
- 向量元素排序:排序函數(shù) sort()
sort(x, decreasing = FALSE)
3.列表
1.創(chuàng)建列表
創(chuàng)建列表使用 list()函數(shù),列表可以包含字符串,數(shù)字,向量,布爾值等
list_data = list('red','green',1,2)
#輸出結(jié)果
[[1]]
[1] "red"
[[2]]
[1] "green"
[[3]]
[1] 1
[[4]]
[1] 2
2.命名列表元素
R語言中的列表可以重命名以便訪問,使用 names()函數(shù),同時(shí)命名多個(gè)列表元素時(shí),可以用 向量 傳入?yún)?shù)
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
3.訪問列表元素
訪問列表元素可以使用索引,對(duì)于已命名元素,也可以使用名稱訪問元素
#使用索引訪問
list_data[1]
#使用名稱訪問
list_data$NAME
4.操作列表元素
- 刪除元素:列表元素刪除操作,即將該元素標(biāo)記為 NULL
ld[5] = NULL
- 更新元素:更新元素可以直接使用索引替換
ld[2] = 1
5.合并列表
合并列表可以使用 c()函數(shù) 合并列表
list.merged = c(list_1,list_2)
#輸出結(jié)果【list_1 = c(1,2,3,4) list_2 = c(4,5,6,7)】
[1] 1 2 3 4 4 5 6 7
6.將列表轉(zhuǎn)換為向量
使用 unlist()函數(shù) 可以將列表轉(zhuǎn)換為向量
4.矩陣
1.創(chuàng)建矩陣
創(chuàng)建矩陣使用 matrix()函數(shù) ,函數(shù)參數(shù)為:
matrix(data, nrow, ncol, byrow, dimnames)
函數(shù)的參數(shù)說明:
- data 是成為矩陣的數(shù)據(jù)元素的輸入向量。
- nrow 是要?jiǎng)?chuàng)建的行數(shù)。
- ncol 是要?jiǎng)?chuàng)建的列數(shù)。
- byrow 是一個(gè)邏輯線索。 如果為TRUE,則輸入向量元素按行排列。
- dimname 是分配給行和列的名稱,行列的名稱用向量傳入,c(rowname_list,colname_list)
2.訪問矩陣元素
訪問矩陣元素,可以使用矩陣索引
- 訪問具體元素:M[row_n,col_n]
- 訪問某行元素:M[row_n,]
- 訪問某列元素:M[,col_n]
3.矩陣計(jì)算
矩陣計(jì)算使用運(yùn)算符合和函數(shù),要求矩陣行列相等
5.數(shù)組
數(shù)組常用于儲(chǔ)存多維數(shù)據(jù),數(shù)組僅接受數(shù)值輸入
1.創(chuàng)建數(shù)組
創(chuàng)建數(shù)組使用 array()函數(shù)
array(data = NA, dim = length(data), dimnames = NULL)
- data,表示輸入數(shù)據(jù),一般使用多維向量輸入,如 c(vector_1,vector_2)
- dim,表示數(shù)組的維度,輸入為向量,如 c(row_n,col_n,dim_n)
- dimnames,表示數(shù)組的維度名稱,輸入同樣為向量
2.訪問數(shù)組元素
訪問數(shù)組元素主要使用索引
- 訪問具體元素:A[row_n,col_n,dim_n]
- 訪問某行元素:A[row_n,,dim_n]
- 訪問某列元素:A[,col_n,dim_n]
- 訪問某維元素:A[,,dim_n]
3.跨數(shù)組元素的計(jì)算
apply()函數(shù)可用于操作跨數(shù)組元素進(jìn)行計(jì)算,其語法為:
apply(x, data, function)
- x,表示操作的矩陣
- data,表示用于操作的矩陣的維度,"1"表示對(duì)行進(jìn)行操作;"2"表示對(duì)列進(jìn)行操作
- function,表示用于操作的函數(shù)
示例
a<-matrix(1:12,nrow=3)
apply(a,2,mean)
#輸出結(jié)果
[1] 2 5 8 11
6.因子
因子是R語言中比較特別的數(shù)據(jù)類型,主要用于儲(chǔ)存"類別"數(shù)據(jù).R把表示分類的數(shù)據(jù)稱為因子
- 因子是一個(gè)向量,通常情況下,每個(gè)元素都是字符類型,也有其他類型數(shù)據(jù)
- 因子具有因子水平,用于限制因子的取值范圍
1.創(chuàng)建因子
通常情況下,R隱式把數(shù)據(jù)類型為字符的列創(chuàng)建為因子,因?yàn)镽會(huì)把文本類型自動(dòng)識(shí)別為類別數(shù)據(jù),并自動(dòng)轉(zhuǎn)化為因子,但同時(shí)也可以通過 factor()函數(shù) 顯式創(chuàng)建,語法如下:
factor(x = character(), levels, labels = levels,
exclude = NA, ordered = is.ordered(x), nmax = NA)
- x,表示用于創(chuàng)建因子的字符
- levels,是水平的標(biāo)簽,字符類型,用于對(duì)水平添加標(biāo)簽,相當(dāng)于對(duì)因子水平重命名
- ordered,邏輯值,用于指定水平是否有序
- nmax,水平的上限數(shù)量
2.因子水平
- 查看因子水平:使用 levels(factor) 查看
- 因子水平的標(biāo)簽:使用 factor()函數(shù) 創(chuàng)建因子時(shí),可以通過 lables 參數(shù)為 因子水平 添加標(biāo)簽
sex=factor(c('f','m','f','f','m'),levels=c('f','m'),labels=c('female','male'),ordered=TRUE)
7.數(shù)據(jù)幀
數(shù)據(jù)幀是表或二維矩陣列狀結(jié)構(gòu),每一列包含一個(gè)變量的值,并且每一行包含來自每一列的一組值
- 列名稱應(yīng)為非空
- 行名稱應(yīng)該是唯一的
- 存儲(chǔ)在數(shù)據(jù)幀中的數(shù)據(jù)可以是數(shù)字,因子或字符類型
- 每個(gè)列應(yīng)包含相同數(shù)量的數(shù)據(jù)項(xiàng)
1.創(chuàng)建數(shù)據(jù)幀
創(chuàng)建數(shù)據(jù)幀需要使用 data.frame()函數(shù) ,其語法如下
data.frame(data, row.names = NULL, check.rows = FALSE,
check.names = TRUE, fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
參數(shù)解釋為:
- data,表示輸入數(shù)據(jù)
- row.names,NULL或單個(gè)整數(shù)或字符串,指定某列用作行名,或者一個(gè)字符或整型向量用作數(shù)據(jù)幀的行名
- check.rows:,如果是TRUE,那么就檢查行長(zhǎng)度和名稱是否一致性
2.從數(shù)據(jù)幀中提取數(shù)據(jù)
- 使用列名稱提取數(shù)據(jù),使用示例:
data_cut <- data.frame(emp.data$name_1,emp.data$name_2)
- 使用切片方式提取數(shù)據(jù),使用示例:
#提取行數(shù)據(jù)
data_cut <- emp.data[1:2,]
#提取列數(shù)據(jù)
data_cut <- emp.data[,2:3]
3.擴(kuò)展數(shù)據(jù)幀
- 添加列:直接使用 列名稱 即可添加數(shù)據(jù),示例如下:
emp.data$new_col = c('向量')
- 添加行:一般需要使用 rbind()函數(shù)
創(chuàng)建同樣的dataframe并使用該函數(shù)合并兩者