作用目標
在每個元素上應用
在子集合上應用
array
listby
在array上,沿margin方向,依次呼叫 fun,返回結果通常為array型別,如果返回值的向量長度不等,則返回list物件。margin表示陣列引用的第幾維下標(即array[index1, index2, ...]中的第幾個index),margin = 1表示行,2表示列,c(1,2) 表示行和列。
– 舉例1:#
二維矩陣物件
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
dimnames(x)[[1]] <- letters[1:8]
– 舉例2:#
三維陣列物件,資料向量中的值被賦給陣列中的值時,將遵循「主列順序」,即第乙個下標變化最快,最後的下表變化最慢。
z <- array(1:24, dim = 2:4)
當 fun 為 null 的時候,返回乙個長度和array中元素個數相等的vector,指示分組的結果,vector中相等的元素所對應的下標屬於同一組。例如,返回c(1, 2, 1, 3, 2), 表示根據傳入的 indices ,第1、3個元素作為一組,第2、5個元素作為一組,第4個元素作為一組。
– 舉例1:
應用於vector
height <- c(174, 165, 180, 171, 160)
***<-c("f","f","m","f","m")#返回
vector #
返回list #
因為函式
fivenum
返回多值,即使
simplify = true
,也是返回
list物件
– 舉例2:
應用於matrix
m <- matrix(c(1:10), nrow=2)
ind <- matrix(c(rep(1,5),rep(2,5)), nrow=2)
– 舉例3:實現
crosstable功能
df<-data.frame(year=kronecker(2001:2003,rep(1,4)),loc=c('beijing','beijing','shanghai','shanghai'), type=rep(c('a','b'),6), sale=rep(1:12))
#以年份為行、地區為列計算銷售總量 #
以年份為行,類別為列計算銷售總量 #
以年份,地區和類別計算銷售總量
在 list 上逐個元素呼叫 fun 。可以用於dataframe上,因為dataframe是一種特殊形式的list。若物件不是list和表示式型別,會先強制轉換為list後再應用於fun函式。
– 舉例1:
應用於matrix
lst <- list(a=c(1:5), b=c(6:10))
– 舉例2:#
非list
會先強制轉換為
list
後再求均值,這時每乙個元素都是乙個
list
的物件
x <- 1:3
– 舉例3:#
對dataframe使用
df <- data.frame(x=c(1:3),y=c(6:8))
– 舉例1:
x<-list(a= 1:10, beta = exp(-3:3), logic = c(true,false,false,true))
#simplify = false,同返回
list物件
– 舉例2:
#simplify = true,
以向量形式返回結果
– 舉例3:#
預設的simplify=true
,fivenum
返回多值,因此最終返回結果為
matrix物件
logical < integer < double < complex
– 舉例1:#
返回值的型別和長度要和預設值一致
x<-list(a= 1:10, beta = exp(-3:3), logic =c(true,false,false,true))
– 舉例1:#
對兩個list
物件的元素依次求和
– 舉例2:#
對第一和第二個物件使用
rep函式,物件二長度較短會被迴圈使用 #
返回物件長度不同,返回
list物件
#返回物件長度相同同,返回
matrix物件
– 舉例3:#
函式返回多值,因此返回
matrix物件
– 舉例4:#
使用moreargs
給出rep
的引數x值
"list" 新建乙個list,元素型別在 classes 中的,呼叫 fun ;不在 classes 中的型別,使用 deflt 。會保留原始list的結構。
"unlist" 相當於對"list"模式下的結果呼叫 unlist(recursive=true)
– 舉例1:
x <- list(list(a = pi, b =list(c = 2)), d = "a test")#對
x中的numeric
型別的元素使用
sqrt函式,
保留非numeric
元素值不變
– 舉例2:#
對x中的character
型別的元素使用
nchar函式,
保留非nchar
元素值不變
– 舉例3:#
對x中的character
型別的元素使用
nchar
函式,非
character
元素使用預設值
deflt
– 舉例4:#
對x中的character
型別的元素使用
nchar
函式,非
character
元素使用預設值
deflt
,返回結果使用
unlist函式
– 舉例5:#
對x中的character
型別的元素使用
nchar
函式,沒有設定
deflt
引數會直接捨棄非
character
元素,返回結果使用
unlist函式
#對於how=list
的情況,沒有設定
deflt
引數會使用預設值
null
–舉例6:#
對x中的numeric
型別的元素使用
log函式,函式引數為
base=2
對environment中命名值進行fun計算後返回乙個列表值,使用者可以請求所有使用過的命名物件。
– 舉例1:
env <- new.env(hash = false)
env$a <- 1:10
env$beta <- exp(-3:3)
env$logic <- c(true, false, false, true)
# 列出環境中的物件
utils::ls.str(env)
# 對每個元素計算均值
各方法詳細總結見下表:
函式
用法
輸入
輸出
語法
對陣列行或者列使用函式
array
array/list
對列表或者向量使用函式
list/
expression
list
對列表或者向量使用函式
list/
expression
list/array
對列表或者向量使用函式
list/
expression
array
對不規則陣列使用函式
array
array/list
對環境中的值使用函式
values in an environment
list
對多個列表或者向量引數使用函式
list/array
list/array
運用函式遞迴產生列表
list
list/vector
R語言 向量化計算(apply族函式)
獲取內建資料 data print data mpg cyl disp hp drat mazda rx4 21.0 6 160 110 3.90 mazda rx4 wag 21.0 6 160 110 3.90 datsun 710 22.8 4 108 93 3.85 hornet 4 dri...
R語言apply函式簇
示例 x為列表 x list a 1 5,b 6 10,c 11 15 xx a 1 1 2 3 4 5 b 1 6 7 8 9 10 c 1 11 12 13 14 15 a 1 3 b 1 8 c 1 13示例 列表 x list a 1 5,b 6 10,c 11 15 spply函式 a b...
R語言apply 函式用法
定義乙個3 2的矩陣 rname c one two three cname c first second b matrix 1 6,nrow 3,dimnames list rname,cname b為 first second one 1 4 two 2 5 three 3 6繼續舉幾個例子 上...