library(stringr)
## 1.1.1
greeting <- function(name,city){
paste("Hi, I am",name,"and I am from",city)
}
## 1.1.2
greeting("meiyao", "redmond")
## [1] "Hi, I am meiyao and I am from redmond"
## 1.1.3
greeting_default <- function(name,city="seattle"){
paste("Hi, I am",name,"and I am from",city)
}
greeting_default("meiyao")
## [1] "Hi, I am meiyao and I am from seattle"
greeting_default("meiyao", "redmond")
## [1] "Hi, I am meiyao and I am from redmond"
##method 1
removeDigits <- function(vec)
{
output <- vec ##store input into output
for(i in 0:9)
{
output <- gsub(toString(i),"",output) ##toString is turning 0:9 from numerical to string
##gsub sub the i-th one with ""
}
print(output)
}
removeDigits(c("INFO 201", "CSE 142", "mps-803c", "K2-team '21"))
## [1] "INFO " "CSE " "mps-c" "K-team '"
##alternative method (nested for loop)
removeDigits1 <- function(vec)
{
newvec <- c()
for(i in 1:length(vec))
{
temp <- ""
for(j in 1:nchar(vec[i]))
{
temp2 <- FALSE
for(k in 0:9)
{
if(as.character(k) == substring(vec[i],j,j))
{
temp2 <- TRUE
}
}
if(temp2 == FALSE)
{
temp <- paste(temp,substring(vec[i],j,j), sep="")
}
}
newvec <- append(newvec, temp)
}
return(newvec)
}
cat(removeDigits1(c("INFO 201", "CSE 142", "mps-803c", "K2-team '21")))
## INFO CSE mps-c K-team '
## 2.1.1
movies <- c("Harry Potter", "Spiderverse","Iron Man","Frozen","Oppenheimer","Cruella")
movies
## [1] "Harry Potter" "Spiderverse" "Iron Man" "Frozen" "Oppenheimer"
## [6] "Cruella"
## 2.1.2
top3 <- movies[1:3]
top3
## [1] "Harry Potter" "Spiderverse" "Iron Man"
## 2.1.3
excited <- paste(movies[1:6],"is a great movie!")
excited
## [1] "Harry Potter is a great movie!" "Spiderverse is a great movie!"
## [3] "Iron Man is a great movie!" "Frozen is a great movie!"
## [5] "Oppenheimer is a great movie!" "Cruella is a great movie!"
## 2.1.4
no4 <- movies[-4]
no4
## [1] "Harry Potter" "Spiderverse" "Iron Man" "Oppenheimer" "Cruella"
## 2.1.5
numbers <- c(70:79)
numbers
## [1] 70 71 72 73 74 75 76 77 78 79
## 2.1.6
length(numbers)
## [1] 10
## 2.1.7
mean <- mean(numbers)
mean
## [1] 74.5
## 2.1.8
sixty_numbers <- c(60:69)
sixty_numbers
## [1] 60 61 62 63 64 65 66 67 68 69
## 2.1.9
add_numbers <- numbers + sixty_numbers
add_numbers
## [1] 130 132 134 136 138 140 142 144 146 148
## 2.2.1
all_numbers <- c(numbers, add_numbers,sixty_numbers)
all_numbers
## [1] 70 71 72 73 74 75 76 77 78 79 130 132 134 136 138 140 142 144 146
## [20] 148 60 61 62 63 64 65 66 67 68 69
iLogical <- all_numbers >70
iLogical
## [1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [13] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE
## 2.2.2
all_numbers[iLogical]
## [1] 71 72 73 74 75 76 77 78 79 130 132 134 136 138 140 142 144 146 148
## 2.2.3
sum(iLogical) ## I got "19" which means there are 19 TRUE-s
## [1] 19
## 2.2.4
length(all_numbers[all_numbers>70])
## [1] 19
## 2.2.5
all_numbers[!(all_numbers>70)] ##logical not
## [1] 70 60 61 62 63 64 65 66 67 68 69
## 2.2.6
cat(all_numbers[!(all_numbers>70)] ^2)
## 4900 3600 3721 3844 3969 4096 4225 4356 4489 4624 4761
## 2.2.7
even_numbers <- all_numbers[!(all_numbers %% 2 == 1)]
## 2.2.8
even_numbers
## [1] 70 72 74 76 78 130 132 134 136 138 140 142 144 146 148 60 62 64 66
## [20] 68
## 2.3.1
numbers <- c(-5:5)
## 2.3.2
numbers[numbers<0] <- 0 ## no need for gsub, just assign 0 to replace
numbers
## [1] 0 0 0 0 0 0 1 2 3 4 5
## 2.3.3
ReLU <- function(vec){
vec[vec<0] <- 0
return(vec)
}
## 2.3.4
ReLU(c(1,-2,4,5,7,-8,-9,0,-1))
## [1] 1 0 4 5 7 0 0 0 0
## 2.3.5
Absolute <- function(vec){
vec[vec<0] <- -vec[vec<0]
return(vec)
}
Absolute(c(1,-2,4,5,7,-8,-9,0,-1))
## [1] 1 2 4 5 7 8 9 0 1
## 2.4.1
students <- c ("Bao-yu", "Dai-yu", "Tan-chun", "Xi-chun" )
incomes <- c(30000,60000,90000,120000)
## 2.4.2
cat(students[incomes<75000])
## Bao-yu Dai-yu
## 2.4.3 challenge
benefits <- incomes ##copy paste an identical vector
benefits[incomes<75000] <- 1/2*(75000-benefits[incomes<75000])
benefits[incomes>=75000] <- 0
benefits
## [1] 22500 7500 0 0
statement <- paste(students,benefits,sep=": ")
statement
## [1] "Bao-yu: 22500" "Dai-yu: 7500" "Tan-chun: 0" "Xi-chun: 0"
cat(statement,sep="\n")
## Bao-yu: 22500
## Dai-yu: 7500
## Tan-chun: 0
## Xi-chun: 0
## 3.1
country <- list(name="中国",capital="北京",population=1425671352,continent="Asia")
## 3.2
names(country)
## [1] "name" "capital" "population" "continent"
## 3.3
country$capital ##Extract capital using dollar-notation
## [1] "北京"
## 3.4
country[[3]] ##double-bracket notation
## [1] 1425671352
## 3.5
area <- "area"
country[[area]] <- "shanghai"
country
## $name
## [1] "中国"
##
## $capital
## [1] "北京"
##
## $population
## [1] 1425671352
##
## $continent
## [1] "Asia"
##
## $area
## [1] "shanghai"