Функции в R не нуждаются в явном операторе возврата, если вы хотите использовать только значение последнего оцененного оператора.Это прекрасно работает в вашей простой функции (вашем первом блоке кода).
Во втором случае, если я правильно понимаю, вы хотите возвращать несколько временных рядов, которые вычисляются один за другим в цикле.То есть вам придется явно составить фрейм данных результата в функции, а затем вернуть этот фрейм данных результата.
Пример, основанный на вашем втором кодовом блоке
# Function definition (Note that the common convention is to define functions at the
# top of any script so that people can understand the structure more easily.)
#
dblExponential<- function(a, x){
# Prepare result data frame
result_df <- data.frame(x)
# loop through the sequence
for (i in a) {
# Compute column for value i
result_column <- 0.01^(i^(x/max(x)*100))
# Define name of column in the resulting data frame
result_column_name <- as.character(i)
# Add the column to the data frame
result_df[result_column_name] <- result_column
}
# Return the result data frame
return(result_df)
}
# Create example data frame
df <- data.frame(c(1, 2, 3, 4, 5, 6, 7))
colnames(df) <- c("var")
# Your sequence of exponents
alpha<- seq(0.85, 0.95, by= .01)
# Call to the function, assign the return value to df2
df2 <- dblExponential(alpha,df$var)
# print df2
df2