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


R語言 rapply()用法及代碼示例


R 語言中的 rapply() 函數用於將函數遞歸應用於列表。

用法:
rapply(object, f, classes = “ANY”, deflt = NULL, how = c(“unlist”, “replace”, “list”))

參數:

object:表示列表或表達式
f:表示要遞歸應用的函數
classes:表示向量的類名或 “ANY” 以匹配任何類
deflt:表示如何不是 “replace” 時的默認結果
how:代表模式

rapply() 函數中的模式有 2 種基本類型。如果how = “replace”,列表對象的每個元素不是它本身就是一個列表,並且在類中包含一個類,那麽列表的每個元素都被應用到該元素的函數 f 的結果值替換。



如果how = “list” 或how = “unlist”,則複製列表對象,並且所有包含在類中的非列表元素被應用於該元素的函數f 的結果值替換,所有其他元素被deflt 替換。

示例 1:使用替換模式


# Defining a list
ls <- list(a = 1:5, b = 100:110, c = c('a', 'b', 'c'))
  
# Print whole list
cat("Whole List:\n")
print(ls)
  
# Using replace mode
cat("Using replace mode:\n")
rapply(ls, mean, how = "replace", classes = "integer")

輸出:

Whole List:
$a
[1] 1 2 3 4 5

$b
 [1] 100 101 102 103 104 105 106 107 108 109 110

$c
[1] "a" "b" "c"

Using replace mode:
$a
[1] 3

$b
[1] 105

$c
[1] "a" "b" "c"

示例 2:使用列表模式


# Defining a list
ls <- list(a = 1:5, b = 100:110, c = c('a', 'b', 'c'))
  
# Print whole list
cat("Whole List:\n")
print(ls)
  
# Using list mode
cat("Using list mode:\n")
rapply(ls, mean, how = "list", classes = "integer")

輸出:

Whole List:
$a
[1] 1 2 3 4 5

$b
 [1] 100 101 102 103 104 105 106 107 108 109 110

$c
[1] "a" "b" "c"

Using list mode:
$a
[1] 3

$b
[1] 105

$c
NULL

示例 3:使用非列表模式


# Defining a list
ls <- list(a = 1:5, b = 100:110, c = c('a', 'b', 'c'))
  
# Print whole list
cat("Whole List:\n")
print(ls)
  
# Using unlist mode
cat("Using unlist mode:\n")
rapply(ls, mean, how = "unlist", classes = "integer")

輸出:

Whole List:
$a
[1] 1 2 3 4 5

$b
 [1] 100 101 102 103 104 105 106 107 108 109 110

$c
[1] "a" "b" "c"

Using unlist mode:
  a   b 
  3 105



相關用法


注:本文由純淨天空篩選整理自utkarsh_kumar大神的英文原創作品 Recursively apply a Function to a List in R Programming – rapply() function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。