当单独应用于向量的每个元素时,我的函数给出的结果与使用 sapply 不同。快把我逼疯了!
我正在使用的项目:这个(简化的)参数列表另一个函数被调用:
f <- as.list(match.call()[-1])
> f
$ampm
c(1, 4)
要复制它,您可以运行以下命令:
foo <- function(ampm) {as.list(match.call()[-1])}
f <- foo(ampm = c(1,4))
这是我的功能。它只是从字符串中删除 'c(...)'。
stripConcat <- function(string) {
sub(')','',sub('c(','',string,fixed=TRUE),fixed=TRUE)
}
单独应用时,它可以正常工作,这就是我想要的:
> stripConcat(f)
[1] "1, 4"
但是当与 sapply 一起使用时,它会给出完全不同的东西,这是我不想要的:
> sapply(f, stripConcat)
ampm
[1,] "c"
[2,] "1"
[3,] "4"
Lapply 也不起作用:
> lapply(f, stripConcat)
$ampm
[1] "c" "1" "4"
其他任何应用功能都没有。这让我发疯——我认为 lapply 和 sapply 应该与重复应用到列表或向量的元素相同!