Я создал пользовательскую функцию, которая принимает три отдельные переменные:
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
Я хотел бы знать, как использовать оба варианта для гибкости.