0

おそらくばかげた質問ですが、どこにも答えが見つかりません(私が見たもの:P)。2 つの引数を持つ関数を作成しようとしています。これらはベクトルになります (例: x=c(a,b,c) および y=c(50,75,100))。これらのすべての組み合わせを計算し、引数を出力名の一部として使用する関数を作成します。例えば

function(x,y)
df$output_a_50 = a*2+50^2
df$output_a_75 = a*2+75^2 .....

任意の提案をいただければ幸いです:)

4

1 に答える 1

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
于 2012-04-20T12:42:30.623 に答える