我在编写一个...作为参数然后lapply(..., length)在函数体中的函数时遇到问题。
目前,我的代码是(重要的部分在第 2 行):
paste1 <- function(..., sep = " ", collapse = NULL) {
if(isTRUE(unique(as.logical(lapply(X = ..., FUN = length)))))
if(length(sep)) paste(..., sep = sep, collapse = collapse)
else paste0(..., collapse = collapse)
else
""
}
麻烦是lapply(X = ..., FUN = length)部分。如果我在参数中有多个元素...,它会尝试length一次应用于所有参数,这会引发错误,因为length只有一个参数。
我不能使用类似的东西,lapply(X = as.list(...), FUN = length)因为...可能的某些元素NULL和列表表示...将丢失信息。
我需要做的就是应用length到各个元素,...而不是先强制它们。