也许是一个愚蠢的问题,但我无法在任何地方找到任何答案(我看过:P)。我试图创建一个具有两个参数的函数,这些参数将是向量(例如x = c(a,b,c)和y = c(50,75,100))。我将编写一个函数来计算这些的所有组合,并将参数用作输出名称的一部分。 E.g。
函数(X,Y)
df $ output_a_50 = a * 2 + 50 ^ 2
df $ output_a_75 = a * 2 + 75 ^ 2
.....
任何建议将不胜感激:)
答案 0 :(得分:2)
正如@Spacedman和其他人所讨论的,你的问题是,如果你将c(a, b, c)
传递给你的函数,那么名字就会丢失。在我看来,最好的选择是通过一个列表:
foo <- function(x, y) {
df <- list()
for (xx in names(x)) {
for (yy in y) {
varname <- paste("output", xx, yy, sep = "_")
df[[varname]] <- x[[xx]]*2 + yy^2
}
}
df
}
foo(x = list(a = NA, b = 1, c = 2:3),
y = c(50, 75, 100))
# $output_a_50
# [1] NA
#
# $output_a_75
# [1] NA
#
# $output_a_100
# [1] NA
#
# $output_b_50
# [1] 2502
#
# $output_b_75
# [1] 5627
#
# $output_b_100
# [1] 10002
#
# $output_c_50
# [1] 2504 2506
#
# $output_c_75
# [1] 5629 5631
#
# $output_c_100
# [1] 10004 10006