每当我想在R中执行“ map” py任务时,我通常都会尝试使用该apply系列中的函数。
但是,我从来没有完全理解它们之间的区别-{ sapply,lapply等等} 如何将函数应用于输入/分组输入,输出将是什么样,甚至输入是什么-所以我经常只是遍历所有这些,直到我得到我想要的。
有人可以解释何时使用哪一种吗?
我目前(可能不正确/不完整)的理解是…
sapply(vec, f):输入是向量。输出是一个向量/矩阵,其中element i是f(vec[i]),如果f具有多元素输出,则为您提供矩阵
lapply(vec, f):与相同sapply,但输出是列表?
apply(matrix, 1/2, f):输入是一个矩阵。输出是一个向量,其中element i是f(矩阵的行/ col i)
tapply(vector, grouping, f):输出是一个矩阵/数组,其中矩阵/数组中的元素是向量f分组g中的值,并g被推送到行/列名
by(dataframe, grouping, f):让g成为一个分组。适用f于组/数据框的每一列。漂亮地打印f每列的分组和值。
aggregate(matrix, grouping, f):类似于by,但不是将输出漂亮地打印出来,聚合将所有内容粘贴到数据框中。
附带的问题:我还没有学会摆弄或重塑-是否会全部取代plyr或reshape全部取代?