vapply()中'c(min =0, max =0)'的含义

问题描述 投票:0回答:1
salaries <- list(leaders = c(250, 200), assistant = 100, members = c(300, 200, 180, 120, 100))


> vapply(salaries, range, c(min=0, max=0))
leaders assistant members
min     200       100     100
max     250       100     300

在这个脚本中,无论最小值和最大值如何,结果总是相同的,所以我想知道“=0”在这里意味着什么。

附注我对 Rstudio 编码非常陌生。请原谅。

我尝试过的。

> vapply(salaries, range, c(min=0.1, max=1))
leaders assistant members
min     200       100     100
max     250       100     300


> vapply(salaries, range, c(min=2, max=1))
leaders assistant members
min     200       100     100
max     250       100     300


> vapply(salaries, range, c(min=1000, max=1000))
leaders assistant members
min     200       100     100
max     250       100     300
r function range max min
1个回答
0
投票

了解

vapply
的第三个参数的实际含义。

考虑这个

for
循环。为了有效地编码,我们预先分配内存,即我们创建一个空的数值数组
m
(又名矩阵),稍后填充。
m
将根据长度为
range
2
函数的输出来确定行数,并根据我们将循环的对象的长度来确定列数,
length(salaries)

> m <- array(0, dim=c(2, length(salaries)), dimnames=list(NULL, names(salaries)))
> for (i in seq_along(salaries)) {
+   m[, i] <- range(salaries[i])
+ }
> m
     leaders assistant members
[1,]     200       100     100
[2,]     250       100     300

由于

vapply
自动检测
length(salaries)
,我们只需要指定
range
函数输出的类型和长度,这正是我们在第三个参数中所做的。

> vapply(X=salaries, FUN=range, FUN.VALUE=numeric(2L))
     leaders assistant members
[1,]     200       100     100
[2,]     250       100     300
© www.soinside.com 2019 - 2024. All rights reserved.