你不需要任何幻想mapply:
n = length(V)
paste0(V[1:(n - 2)], V[2:(n - 1)], V[3:n])
这是一个参数解决方案,您仍然不需要mapply:
i = 3
apply(matrix(V, nrow = length(V) + 1, ncol = i)[1:(length(V) - i + 1), ],
MARGIN = 1, FUN = paste, collapse = "")
您可以对此进行功能化:
f = function(V, i) {
apply(matrix(V, nrow = length(V) + 1, ncol = i)[1:(length(V) - i + 1), ],
MARGIN = 1, FUN = paste, collapse = "")
}
然后,您可以将其应用于向量列表,如下所示:
lapply(list(c("a", "b", "c", "d"), letters), f, i = 3)
# [[1]]
# [1] "abc" "bcd"
#
# [[2]]
# [1] "abc" "bcd" "cde" "def" "efg" "fgh" "ghi" "hij" "ijk" "jkl" "klm" "lmn" "mno" "nop" "opq"
# [16] "pqr" "qrs" "rst" "stu" "tuv" "uvw" "vwx" "wxy" "xyz"
如果您有几个不同的向量并且对于每个向量您想要不同数量的元素的串联,您将需要mapply(并且您可以将它与函数一起使用) 。