my_num_vector <- function(){
  vec <- c(log(11,10), cos(pi/5), exp(pi/3), (1173%%7)/19)
  return(vec)
}
my_num_vector()
## [1] 1.0413927 0.8090170 2.8496539 0.2105263
minVec<-c(3,1,12,2,4)
minVec[length(minVec)]
## [1] 4
len <- length (minVec) 
fl<-minVec[(len-4)]*minVec[length(minVec)]
print(fl)
## [1] 12
minVec1<-c(3,1,12)
minVec1[length(minVec1)]
## [1] 12
lent <- length (minVec1) 
fl1<-minVec1[(lent-2)]*minVec1[length(minVec1)]
print(fl1)
## [1] 36
a<-c(3,1,12,2,4)
b<-c(1,2,3,4,5)
orth_scalar_prod <- function (x,y){
  x<-a
  y<-b
  z<-sum(x*y)
  return(z)
}
orth_scalar_prod(a,b)
## [1] 69
x <- "I am your father." 
lukes_father <- function (x){
  if (is.name(x))
    x<-as.character(x)
  return(x)
}
cat(lukes_father("Luke,"), x)
## Luke, I am your father.
cat(lukes_father("Leia,"), x)
## Leia, I am your father.
a<-c(2, 9, 2, 4, 102)
b<-4
filter_my_vector <- function (x,y){
  x<-a
  y<-b
  z<-ifelse(x>=y, "NA", x)
  return(z)
}
filter_my_vector (a,b)
## [1] "2"  "NA" "2"  "NA" "NA"
my_magic_matrix<-c(4,9,2,3,5,7,8,1,6)
my_magic_matrix<-matrix(my_magic_matrix, nrow=3)
new_mat<-cbind(my_magic_matrix,my_magic_matrix)
calculate_elements <- function(x){
  if (is.data.frame(x))
  x <- as.matrix(x)
  leg<-length(x)
  return(leg)
}
calculate_elements(my_magic_matrix)
## [1] 9
calculate_elements(new_mat)
## [1] 18
x <- matrix(data = 1:9, nrow = 3, ncol = 3)  
i<-x[1,]
row_to_zero <- function(x){
    x[1,]<-0
    return(x)
}
row_to_zero(x)
##      [,1] [,2] [,3]
## [1,]    0    0    0
## [2,]    2    5    8
## [3,]    3    6    9
A <- matrix(data = 1:9, nrow = 3, ncol = 3)  
add_elements_to_matrix <- function(x,j,i){
              Anew <- matrix(data=x, ncol=j,nrow=i)  
              y<-rbind(A, Anew)  
    return(y)
}
add_elements_to_matrix(x = 10, j = 3, i=3)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## [4,]   10   10   10
## [5,]   10   10   10
## [6,]   10   10   10
#For some reason I cannot understand, it does not add 3 more rows with number 10
my_magic_list <- function() {
  x <- list(info="my own list",my_num_vector(),my_magic_matrix) 
return(x)
}
my_magic_list()
## $info
## [1] "my own list"
## 
## [[2]]
## [1] 1.0413927 0.8090170 2.8496539 0.2105263
## 
## [[3]]
##      [,1] [,2] [,3]
## [1,]    4    3    8
## [2,]    9    5    1
## [3,]    2    7    6
change_info <- function() {
  a_list <- my_magic_list()
  x <- a_list 
  x[[1]] <- "Some new info"
return(x)
}
change_info()
## $info
## [1] "Some new info"
## 
## [[2]]
## [1] 1.0413927 0.8090170 2.8496539 0.2105263
## 
## [[3]]
##      [,1] [,2] [,3]
## [1,]    4    3    8
## [2,]    9    5    1
## [3,]    2    7    6
sum_numeric_part <- function() {
  a_list <- as.vector(my_magic_list())
  x <- length(a_list)
return(x)
}
sum_numeric_part()
## [1] 3
my_magic_list <- function() {
  x <- list(info="my own list",my_num_vector(),my_magic_matrix, note = "This is a magic list!") 
return(x)
}
my_magic_list()
## $info
## [1] "my own list"
## 
## [[2]]
## [1] 1.0413927 0.8090170 2.8496539 0.2105263
## 
## [[3]]
##      [,1] [,2] [,3]
## [1,]    4    3    8
## [2,]    9    5    1
## [3,]    2    7    6
## 
## $note
## [1] "This is a magic list!"
my_data.frame <- function() {
 id<- c(1,2,3)
name<-c("John","Lisa","Azra")
income<-c(7.30,0.00,15.21)
rich<-c("FALSE","FALSE",TRUE)
x <-data.frame(id,name,income,rich) 
return(x)
}
my_data.frame() 
##   id name income  rich
## 1  1 John   7.30 FALSE
## 2  2 Lisa   0.00 FALSE
## 3  3 Azra  15.21  TRUE
sort_head <- function() {
 data(iris)
x<- head(iris[order(iris$Petal.Length, decreasing = TRUE),],5)
return(x)
}
sort_head() 
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 119          7.7         2.6          6.9         2.3 virginica
## 118          7.7         3.8          6.7         2.2 virginica
## 123          7.7         2.8          6.7         2.0 virginica
## 106          7.6         3.0          6.6         2.1 virginica
## 132          7.9         3.8          6.4         2.0 virginica
add_median_variable <- function(x,y) {
 data(faithful)
 dtf <- data.frame(faithful)
 y<-median(faithful$eruptions)
 dtf$compared_to_median <- ifelse(dtf$eruptions>y, "Greater", "Smaller")
 x<-dtf
return(x)
}
add_median_variable(faithful, median) 
##     eruptions waiting compared_to_median
## 1       3.600      79            Smaller
## 2       1.800      54            Smaller
## 3       3.333      74            Smaller
## 4       2.283      62            Smaller
## 5       4.533      85            Greater
## 6       2.883      55            Smaller
## 7       4.700      88            Greater
## 8       3.600      85            Smaller
## 9       1.950      51            Smaller
## 10      4.350      85            Greater
## 11      1.833      54            Smaller
## 12      3.917      84            Smaller
## 13      4.200      78            Greater
## 14      1.750      47            Smaller
## 15      4.700      83            Greater
## 16      2.167      52            Smaller
## 17      1.750      62            Smaller
## 18      4.800      84            Greater
## 19      1.600      52            Smaller
## 20      4.250      79            Greater
## 21      1.800      51            Smaller
## 22      1.750      47            Smaller
## 23      3.450      78            Smaller
## 24      3.067      69            Smaller
## 25      4.533      74            Greater
## 26      3.600      83            Smaller
## 27      1.967      55            Smaller
## 28      4.083      76            Greater
## 29      3.850      78            Smaller
## 30      4.433      79            Greater
## 31      4.300      73            Greater
## 32      4.467      77            Greater
## 33      3.367      66            Smaller
## 34      4.033      80            Greater
## 35      3.833      74            Smaller
## 36      2.017      52            Smaller
## 37      1.867      48            Smaller
## 38      4.833      80            Greater
## 39      1.833      59            Smaller
## 40      4.783      90            Greater
## 41      4.350      80            Greater
## 42      1.883      58            Smaller
## 43      4.567      84            Greater
## 44      1.750      58            Smaller
## 45      4.533      73            Greater
## 46      3.317      83            Smaller
## 47      3.833      64            Smaller
## 48      2.100      53            Smaller
## 49      4.633      82            Greater
## 50      2.000      59            Smaller
## 51      4.800      75            Greater
## 52      4.716      90            Greater
## 53      1.833      54            Smaller
## 54      4.833      80            Greater
## 55      1.733      54            Smaller
## 56      4.883      83            Greater
## 57      3.717      71            Smaller
## 58      1.667      64            Smaller
## 59      4.567      77            Greater
## 60      4.317      81            Greater
## 61      2.233      59            Smaller
## 62      4.500      84            Greater
## 63      1.750      48            Smaller
## 64      4.800      82            Greater
## 65      1.817      60            Smaller
## 66      4.400      92            Greater
## 67      4.167      78            Greater
## 68      4.700      78            Greater
## 69      2.067      65            Smaller
## 70      4.700      73            Greater
## 71      4.033      82            Greater
## 72      1.967      56            Smaller
## 73      4.500      79            Greater
## 74      4.000      71            Smaller
## 75      1.983      62            Smaller
## 76      5.067      76            Greater
## 77      2.017      60            Smaller
## 78      4.567      78            Greater
## 79      3.883      76            Smaller
## 80      3.600      83            Smaller
## 81      4.133      75            Greater
## 82      4.333      82            Greater
## 83      4.100      70            Greater
## 84      2.633      65            Smaller
## 85      4.067      73            Greater
## 86      4.933      88            Greater
## 87      3.950      76            Smaller
## 88      4.517      80            Greater
## 89      2.167      48            Smaller
## 90      4.000      86            Smaller
## 91      2.200      60            Smaller
## 92      4.333      90            Greater
## 93      1.867      50            Smaller
## 94      4.817      78            Greater
## 95      1.833      63            Smaller
## 96      4.300      72            Greater
## 97      4.667      84            Greater
## 98      3.750      75            Smaller
## 99      1.867      51            Smaller
## 100     4.900      82            Greater
## 101     2.483      62            Smaller
## 102     4.367      88            Greater
## 103     2.100      49            Smaller
## 104     4.500      83            Greater
## 105     4.050      81            Greater
## 106     1.867      47            Smaller
## 107     4.700      84            Greater
## 108     1.783      52            Smaller
## 109     4.850      86            Greater
## 110     3.683      81            Smaller
## 111     4.733      75            Greater
## 112     2.300      59            Smaller
## 113     4.900      89            Greater
## 114     4.417      79            Greater
## 115     1.700      59            Smaller
## 116     4.633      81            Greater
## 117     2.317      50            Smaller
## 118     4.600      85            Greater
## 119     1.817      59            Smaller
## 120     4.417      87            Greater
## 121     2.617      53            Smaller
## 122     4.067      69            Greater
## 123     4.250      77            Greater
## 124     1.967      56            Smaller
## 125     4.600      88            Greater
## 126     3.767      81            Smaller
## 127     1.917      45            Smaller
## 128     4.500      82            Greater
## 129     2.267      55            Smaller
## 130     4.650      90            Greater
## 131     1.867      45            Smaller
## 132     4.167      83            Greater
## 133     2.800      56            Smaller
## 134     4.333      89            Greater
## 135     1.833      46            Smaller
## 136     4.383      82            Greater
## 137     1.883      51            Smaller
## 138     4.933      86            Greater
## 139     2.033      53            Smaller
## 140     3.733      79            Smaller
## 141     4.233      81            Greater
## 142     2.233      60            Smaller
## 143     4.533      82            Greater
## 144     4.817      77            Greater
## 145     4.333      76            Greater
## 146     1.983      59            Smaller
## 147     4.633      80            Greater
## 148     2.017      49            Smaller
## 149     5.100      96            Greater
## 150     1.800      53            Smaller
## 151     5.033      77            Greater
## 152     4.000      77            Smaller
## 153     2.400      65            Smaller
## 154     4.600      81            Greater
## 155     3.567      71            Smaller
## 156     4.000      70            Smaller
## 157     4.500      81            Greater
## 158     4.083      93            Greater
## 159     1.800      53            Smaller
## 160     3.967      89            Smaller
## 161     2.200      45            Smaller
## 162     4.150      86            Greater
## 163     2.000      58            Smaller
## 164     3.833      78            Smaller
## 165     3.500      66            Smaller
## 166     4.583      76            Greater
## 167     2.367      63            Smaller
## 168     5.000      88            Greater
## 169     1.933      52            Smaller
## 170     4.617      93            Greater
## 171     1.917      49            Smaller
## 172     2.083      57            Smaller
## 173     4.583      77            Greater
## 174     3.333      68            Smaller
## 175     4.167      81            Greater
## 176     4.333      81            Greater
## 177     4.500      73            Greater
## 178     2.417      50            Smaller
## 179     4.000      85            Smaller
## 180     4.167      74            Greater
## 181     1.883      55            Smaller
## 182     4.583      77            Greater
## 183     4.250      83            Greater
## 184     3.767      83            Smaller
## 185     2.033      51            Smaller
## 186     4.433      78            Greater
## 187     4.083      84            Greater
## 188     1.833      46            Smaller
## 189     4.417      83            Greater
## 190     2.183      55            Smaller
## 191     4.800      81            Greater
## 192     1.833      57            Smaller
## 193     4.800      76            Greater
## 194     4.100      84            Greater
## 195     3.966      77            Smaller
## 196     4.233      81            Greater
## 197     3.500      87            Smaller
## 198     4.366      77            Greater
## 199     2.250      51            Smaller
## 200     4.667      78            Greater
## 201     2.100      60            Smaller
## 202     4.350      82            Greater
## 203     4.133      91            Greater
## 204     1.867      53            Smaller
## 205     4.600      78            Greater
## 206     1.783      46            Smaller
## 207     4.367      77            Greater
## 208     3.850      84            Smaller
## 209     1.933      49            Smaller
## 210     4.500      83            Greater
## 211     2.383      71            Smaller
## 212     4.700      80            Greater
## 213     1.867      49            Smaller
## 214     3.833      75            Smaller
## 215     3.417      64            Smaller
## 216     4.233      76            Greater
## 217     2.400      53            Smaller
## 218     4.800      94            Greater
## 219     2.000      55            Smaller
## 220     4.150      76            Greater
## 221     1.867      50            Smaller
## 222     4.267      82            Greater
## 223     1.750      54            Smaller
## 224     4.483      75            Greater
## 225     4.000      78            Smaller
## 226     4.117      79            Greater
## 227     4.083      78            Greater
## 228     4.267      78            Greater
## 229     3.917      70            Smaller
## 230     4.550      79            Greater
## 231     4.083      70            Greater
## 232     2.417      54            Smaller
## 233     4.183      86            Greater
## 234     2.217      50            Smaller
## 235     4.450      90            Greater
## 236     1.883      54            Smaller
## 237     1.850      54            Smaller
## 238     4.283      77            Greater
## 239     3.950      79            Smaller
## 240     2.333      64            Smaller
## 241     4.150      75            Greater
## 242     2.350      47            Smaller
## 243     4.933      86            Greater
## 244     2.900      63            Smaller
## 245     4.583      85            Greater
## 246     3.833      82            Smaller
## 247     2.083      57            Smaller
## 248     4.367      82            Greater
## 249     2.133      67            Smaller
## 250     4.350      74            Greater
## 251     2.200      54            Smaller
## 252     4.450      83            Greater
## 253     3.567      73            Smaller
## 254     4.500      73            Greater
## 255     4.150      88            Greater
## 256     3.817      80            Smaller
## 257     3.917      71            Smaller
## 258     4.450      83            Greater
## 259     2.000      56            Smaller
## 260     4.283      79            Greater
## 261     4.767      78            Greater
## 262     4.533      84            Greater
## 263     1.850      58            Smaller
## 264     4.250      83            Greater
## 265     1.983      43            Smaller
## 266     2.250      60            Smaller
## 267     4.750      75            Greater
## 268     4.117      81            Greater
## 269     2.150      46            Smaller
## 270     4.417      90            Greater
## 271     1.817      46            Smaller
## 272     4.467      74            Greater
X <- as.matrix(data.frame(c(5,2,3),c(4,-3,7),c(4,1,2)))
sum(diag(X))
## [1] 4
matrix_trace <- function(X) {
  n <- dim(X)[1] # get dimension of matrix
  tr <- 0 # initialize trace value
  
  # Loop over the diagonal elements of the supplied matrix and add the element to tr
  for (k in 1:n) {
    l <- X[k,k]
    tr <- tr + l
  }
  return(tr[[1]])
}
matrix_trace (X)
## [1] 4
fast_stock_analysis <- function(x,y) {
setwd("/Users/thsofia/Downloads")
file.name <- "AppleTest.csv"
x <- file.name
data <- read.csv(file.name, stringsAsFactors = default.stringsAsFactors())
data[1:10,]
total_spread <- max(data$High)-min(data$Low)
mean_final <-mean(data$Adj.Close)
final_up <- ifelse(data[1,8]<data[10,8], "TRUE", "FALSE")
dates <- as.character(data[1,2]:data[10,2])
y <- list(total_spread=total_spread,mean_final=mean_final,final_up=final_up, dates=dates) 
return(y)
}
fast_stock_analysis()
## $total_spread
## [1] 175.12
## 
## $mean_final
## [1] 352.3721
## 
## $final_up
## [1] "TRUE"
## 
## $dates
## [1] "2012-01-24:2012-01-10"
leap_year <- function(date) {
  if (is.numeric(date)) {
    year <- date
  } else {
    year <- year(date)
  }
  (year %% 4 == 0) & ((year %% 100 != 0) | (year %% 400 == 0))
}
year <- c("1900", "1984", "1997", "2000", "2001")
my_test_years1 <- c(leap_year(1900), leap_year(1984), leap_year(1997), leap_year(2000), leap_year(2001))
myresult<-data.frame(year,my_test_years1)
print(myresult)
##   year my_test_years1
## 1 1900          FALSE
## 2 1984           TRUE
## 3 1997          FALSE
## 4 2000           TRUE
## 5 2001          FALSE