r: исправить именование переменных функции и использовать transmute - PullRequest
0 голосов
/ 19 декабря 2018

Я создал пользовательскую функцию, которая принимает три отдельные переменные:

dblExponential<- function(a, b, x){
  # Prepare result data frame
  result_df <- data.frame(x)
  # loop through the sequence
  for (i in a) {
    for (j in b){
      # Compute column for value i
      result_column <- j^(i^(x/max(x)*100))
      # Define name of column in the resulting data frame
      result_column_name <- as.character(paste(x, i, j, sep = "_"))
      # Add the column to the data frame
      result_df[result_column_name] <- result_column
    }
  }
  # Return the result data frame
  return(result_df)
}

Я хочу запустить через него следующий кадр данных:

dfTest<- data.frame(rnorm(10,13,3), rnorm(10, 12, 2))
colnames(dfTest)<- c("var1", "var2")

# creating a & b per the function above
alpha<- seq(0.85, 0.95, by= .01)
beta<- sapply(1:10, function(x){.1**x})

# run function
dfTest2<- dblExponential(alpha, beta, dfTest)

Когда я передаю dfTest напрямуючерез функцию я получаю 220 переменных, которые хочу (каждая var проходит через 11 значений для альфа, 10 для бета), однако имена перечислены в следующем формате:

c(7.74041000068398, 17.0484482255766, 14.3454072552564, 
11.9569186059367, 15.8419904194506, 20.8602917396248, 11.8515604771538, 
10.5655772517175, 13.32365521973, 15.9976857032445)_0.95_1e-08

Чтомне нужно изменить функцию paste, чтобы настроить это?

Далее я пытаюсь выяснить, стоит ли вообще использовать dplyr, и когда я пытаюсь запустить его через transmuteЯ получаю другую ошибку:

dfTest3<- dfTest %>% 
  transmute_all(funs(sCurve(alpha, beta, dfTest)))

Возвращает следующую ошибку:

> Error in mutate_impl(.data, dots) : 
  > Column `var1` is of unsupported class data.frame

Я хотел бы знать, как использовать оба варианта для гибкости.

...