Error in seq.default(a, b, c): 'from' must be of length 1
目录
Error in seq.default(a, b, c): 'from' must be of length 1
问题:
解决:
完整错误:
问题:
fun <- function(a, b, c) {
sum(seq(a, b, c))
}
df <- data.frame(mn = c(1, 2, 3),
mx = c(8, 13, 18),
rng = c(1, 2, 3))
df %>%
mutate(output = fun(a = mn, b = mx, c = rng))
解决:
我们编写了一个自定义函数,需要将这个自定义函数应用于dataframe中的每一行数据;
mutate函数将根据值向量创建一个新变量。但是如果我们使用的函数不能接受向量,也不能输出向量,那么我们必须使用rowwise逐行操作。
我们可以在管道链中使用rowwise来告诉dplyr逐行执行以下所有命令。
其中自定义函数:对于从数a到数b,每2个数值间隔为c的等差数列,函数将计算该数列的和;
#
fun <- function(a, b, c) {
sum(seq(a, b, c))
}
df <- data.frame(mn = c(1, 2, 3),
mx = c(8, 13, 18),
rng = c(1, 2, 3))
df %>%
rowwise %>%
mutate(output = fun(a = mn, b = mx, c = rng))
#> Source: local data frame [3 x 4]
#> Groups:
#>
#> # A tibble: 3 x 4
#> mn mx rng output
#>
#> 1 1 8 1 36
#> 2 2 13 2 42
#> 3 3 18 3 63
完整错误:
> fun <- function(a, b, c) { + sum(seq(a, b, c)) + } > > df <- data.frame(mn = c(1, 2, 3), + mx = c(8, 13, 18), + rng = c(1, 2, 3)) > > df %>% + mutate(output = fun(a = mn, b = mx, c = rng)) Error in `mutate()`: ! Problem while computing `output = fun(a = mn, b = mx, c = rng)`. Caused by error in `seq.default()`: ! 'from' must be of length 1 Run `rlang::last_error()` to see where the error occurred. Called from: signal_abort(cnd, .file) Browse[1]> >
精彩内容
发表评论