台大系統訓練班 r_programming 第4次期中作業 :
統整你的 my.length() 與 my.sum() 函數把 sd() 函數實作出來
#模組化方法 :
#在呼叫函數前,先宣告輸入 :
fib_generator <- function(x, y, n){
f1 <- x
f2 <- y
fib <- c(f1, f2)
for (i in 3:n) { #不是for(i in 1:n),不是1到n喔!不然會多2項!
f3 <- f1 + f2
fib <- c(fib, f3)
f1 <- f2
f2 <- f3
}
return(fib)
}
Fibonacci <- fib_generator(30, 35, 11) #class(Fibonacci) [1] "numeric"
input_vector <- c(Fibonacci)
# 定義 my.length() 函數
my.length <- function(input_vector) {
count <- 0
for (i in input_vector) {
count <- count + 1
}
return(count)
}
#定義n
n <- my.length(input_vector)
# 定義 my.sum() 函數
my.sum <- function(input_vector) {
my_sum <- 0
for (i in input_vector) {
my_sum <- my_sum + i
}
return(my_sum)
}
# 定義 my.mean() 函數
my.mean <- function(input_vector){
my_mean_function <- my.sum(input_vector) / my.length(input_vector)
return(my_mean_function)
}
#定義x_bar
x_bar <- my.mean(input_vector)
#定義SSE
SSE <- 0 #---------------------------千萬記得要先做出可以儲存加總迭代的東西!!!!
for (i in input_vector) {
SSE <- SSE + my.sum( (x_bar - i)**2 ) #--------------迭代加總結果的手法
}
#最後定義my.sd 和 SD
my.sd <- function(input_vector){
return( (SSE / (n - 1))**0.5 )
}
SD <- my.sd(input_vector)
n #元素個數
## [1] 11
x_bar #平均數
## [1] 697.7273
SSE #sum of squared errors
## [1] 8677718
SD #標準差
## [1] 931.5427
input_vector <- c(input_vector)
The_number_of_elements <- c(n)
x_bar <- c(x_bar)
SSE <- c(SSE)
SD <- c(SD)
vector_information_df <- data.frame(The_number_of_elements, x_bar, SSE, SD)
View(vector_information_df)
vector_information_list <- list(All_elements_of_input_vector = input_vector, other_information = vector_information_df)
vector_information_list
## $All_elements_of_input_vector
## [1] 30 35 65 100 165 265 430 695 1125 1820 2945
##
## $other_information
## The_number_of_elements x_bar SSE SD
## 1 11 697.7273 8677718 931.5427