
378
|
第
12
章
息而不是问题信号。如果这样的消息让你讨厌,你可以在 suppressMessages(...)
内调用函数使它消失。
12.15.4 另请参阅
有关控制错误和警告报告的其他方法,请参阅 options 函数。
12.16 从列表中提取函数参数
12.16.1 问题
你的数据显示在列表结构中。你需要将数据传递给函数,但该函数不接受列表。
12.16.2 解决方案
在简单的情况下,将列表转换为向量。对于更复杂的情况,do.call 函数可以将列表
分解为单个参数并调用你的函数:
do.call(
function
,
list
)
12.16.3 讨论
如果数据用向量表示的,处理它就很简单,大多数情况下,R 函数按预期运行:
vec <- c(1, 3, 5, 7, 9)
mean(vec)
#> [1] 5
如果数据是用列表表示的,则某些函数会失效,将返回一个无用的结果,如下所示:
numbers <- list(1, 3, 5, 7, 9)
mean(numbers)
#> Warning in mean.default(numbers): argument is not numeric or logical:
#> returning NA
#> [1] NA
numbers 是一个简单的、单个水平的列表,因此我们可以将其转换为一个向量并调用
这个函数:
mean(unlist(numbers))
#> [1] 5
当你有多水平列表结构(列表中有列表)时,情况就变得复杂了。这种情况会在复杂数
据结构中发生。以下列表中的每个子列表都是一列数据: ...