将多个参数传递给 apply/sapply 语法
Passing in multiple arguements to apply/sapply sytnax
这里是新手 - 无法弄清楚一些基本语法并且考虑到单词的通用性 google 没有帮助....
mtcars$testcol = 'testing'
imgood = sapply(mtcars, IQR, na.rm=T) #works ok... helpme =
sapply(mtcars, quantile c(.3,.9, .95, na.rm=TRUE) #don't know how to
那么我想做的就是
mtcars$mynewcolumn = imgood....etc
传入参数 sapply/apply...
我也一直在看 summarise_each, summarise_all 和 dplyr::
有什么方法可以在这里工作吗?
不幸的是,quantile
并非设计用于 return NA 向量或单个 NA。为了实现这一点,您可以编写一个封闭函数来按照您希望的方式运行:
my_quantile <- function(x, ...) if ( is.numeric(x) ) {quantile(x,...)} else {
z <- list(...)[[1]]; rep(NA,length(z))}
> sapply(mtcars, my_quantile, c(.3,.9, .95), na.rm=TRUE)
mpg cyl disp hp drat wt qsec vs am gear carb testcol
30% 15.98 4 142.06 106.20 3.1500 2.77300 17.0200 0 0 3 2.0 NA
90% 30.09 8 396.00 243.50 4.2090 4.04750 19.9900 1 1 5 4.0 NA
95% 31.30 8 449.00 253.55 4.3145 5.29275 20.1045 1 1 5 4.9 NA
这可能不是您要编写的第一个函数,因为它需要提取传递给分位数的第二个参数以重复 NA 的次数以匹配其他分位数,这反过来允许 sapply
重新运行矩阵而不是列表。它也会有点脆弱,因为你没有说出你的论点。如果 probs
被命名,那么它可能不是第一个,所以最好检查一下 match.args
是否可以找到 probs
参数,然后,如果失败了,使用 ...
-参数列表中的第一个参数。
这里是新手 - 无法弄清楚一些基本语法并且考虑到单词的通用性 google 没有帮助....
mtcars$testcol = 'testing'
imgood = sapply(mtcars, IQR, na.rm=T) #works ok... helpme =
sapply(mtcars, quantile c(.3,.9, .95, na.rm=TRUE) #don't know how to
那么我想做的就是
mtcars$mynewcolumn = imgood....etc
传入参数 sapply/apply...
我也一直在看 summarise_each, summarise_all 和 dplyr:: 有什么方法可以在这里工作吗?
不幸的是,quantile
并非设计用于 return NA 向量或单个 NA。为了实现这一点,您可以编写一个封闭函数来按照您希望的方式运行:
my_quantile <- function(x, ...) if ( is.numeric(x) ) {quantile(x,...)} else {
z <- list(...)[[1]]; rep(NA,length(z))}
> sapply(mtcars, my_quantile, c(.3,.9, .95), na.rm=TRUE)
mpg cyl disp hp drat wt qsec vs am gear carb testcol
30% 15.98 4 142.06 106.20 3.1500 2.77300 17.0200 0 0 3 2.0 NA
90% 30.09 8 396.00 243.50 4.2090 4.04750 19.9900 1 1 5 4.0 NA
95% 31.30 8 449.00 253.55 4.3145 5.29275 20.1045 1 1 5 4.9 NA
这可能不是您要编写的第一个函数,因为它需要提取传递给分位数的第二个参数以重复 NA 的次数以匹配其他分位数,这反过来允许 sapply
重新运行矩阵而不是列表。它也会有点脆弱,因为你没有说出你的论点。如果 probs
被命名,那么它可能不是第一个,所以最好检查一下 match.args
是否可以找到 probs
参数,然后,如果失败了,使用 ...
-参数列表中的第一个参数。