Functions
- return
- invisible
- switch
- cut
#when we use function?
df <- tibble::tibble(
a=rnorm(10),
b=rnorm(10),
c=rnorm(10),
d=rnorm(10)
)
df
## # A tibble: 10 x 4
## a b c d
## <dbl> <dbl> <dbl> <dbl>
## 1 -2.06 -1.77 0.880 -0.624
## 2 -0.376 0.183 -1.48 1.88
## 3 0.976 -0.793 -0.851 0.813
## 4 0.841 -1.13 -0.449 1.03
## 5 -0.943 1.58 0.954 0.290
## 6 -0.692 -1.15 -0.0912 -0.870
## 7 0.329 -1.73 -1.10 -1.48
## 8 0.633 1.86 -0.00422 -0.890
## 9 0.778 0.766 -0.342 -0.772
## 10 -0.168 0.143 1.63 -0.907
#rescale each column to have a range from 0 to 1
(df$a-min(df$a, na.rm = T))/
(max(df$a, na.rm = T)-min(df$a, na.rm = T))
## [1] 0.0000000 0.5552430 1.0000000 0.9555182 0.3689344 0.4515468 0.7871137 0.8871371 0.9346448 0.6238147
## # A tibble: 10 x 4
## a b c d
## <dbl> <dbl> <dbl> <dbl>
## 1 -2.06 -1.77 0.880 -0.624
## 2 -0.376 0.183 -1.48 1.88
## 3 0.976 -0.793 -0.851 0.813
## 4 0.841 -1.13 -0.449 1.03
## 5 -0.943 1.58 0.954 0.290
## 6 -0.692 -1.15 -0.0912 -0.870
## 7 0.329 -1.73 -1.10 -1.48
## 8 0.633 1.86 -0.00422 -0.890
## 9 0.778 0.766 -0.342 -0.772
## 10 -0.168 0.143 1.63 -0.907
x <- df$a
(x-min(x, na.rm = T))/
(max(x, na.rm = T)-min(x, na.rm = T))
## [1] 0.0000000 0.5552430 1.0000000 0.9555182 0.3689344 0.4515468 0.7871137 0.8871371 0.9346448 0.6238147
(rng <- range(x, na.rm=TRUE))
## [1] -2.0649782 0.9763539
(x-rng[1])/(rng[2]-rng[1])
## [1] 0.0000000 0.5552430 1.0000000 0.9555182 0.3689344 0.4515468 0.7871137 0.8871371 0.9346448 0.6238147
rescale01 <- function(x){
rng <- range(x, na.rm=T)
(x-rng[1])/(rng[2]-rng[1])
}
rescale01
## function(x){
## rng <- range(x, na.rm=T)
## (x-rng[1])/(rng[2]-rng[1])
## }
## <environment: 0x154b86528>
## [1] 0.0 0.5 1.0
## [1] 0.0 0.5 1.0
## [1] 0.00 0.25 0.50 NA 1.00
## [1] 1 2 3 4 5 6 7 8 9 10 Inf
## [1] 0 0 0 0 0 0 0 0 0 0 NaN
## [1] 1 10
rescale01 <- function(x){
rng <- range(x, na.rm=T, finite=T)
(x-rng[1])/(rng[2]-rng[1])
}
rescale01(x)
## [1] 0.0000000 0.1111111 0.2222222 0.3333333 0.4444444 0.5555556 0.6666667 0.7777778 0.8888889 1.0000000 Inf
#conditions
#compute cofidence interval
set.seed(111)
x <- runif(100)
x
## [1] 0.5929812845 0.7264811215 0.3704220036 0.5149238301 0.3776632159 0.4183373258 0.0106578451 0.5322952422 0.4321606164
## [10] 0.0936815199 0.5557799137 0.5902284889 0.0671411434 0.0475478533 0.1562025158 0.4464277634 0.1714436871 0.9665342933
## [19] 0.3106664298 0.6144663957 0.4310607871 0.2855270915 0.3421513471 0.3866276275 0.9675274789 0.3220267275 0.6532294548
## [28] 0.2833034997 0.7874279192 0.5959206352 0.0585964625 0.5098998600 0.4657924296 0.4693590938 0.3597453721 0.7134103531
## [37] 0.1163154817 0.7839926207 0.6421407105 0.8051009134 0.6411978584 0.3284916454 0.6356909545 0.9285191579 0.5752422044
## [46] 0.3666838536 0.4366072204 0.8559219379 0.6279955737 0.7937756432 0.7251648332 0.5850447209 0.0327716474 0.3329946804
## [55] 0.9967166614 0.5482733699 0.5758329388 0.4563152066 0.0965785654 0.8055401752 0.0009253006 0.4667440471 0.1732608730
## [64] 0.2592225648 0.9192820815 0.2319295844 0.0525656715 0.3043926249 0.0117258150 0.3007076983 0.8775839461 0.6652787277
## [73] 0.4537648347 0.0533223320 0.6309068091 0.4421851884 0.2673464869 0.9837744189 0.0951241532 0.7859691235 0.1198521818
## [82] 0.8812154671 0.1310980669 0.4003378763 0.0866140136 0.3747997992 0.6847860171 0.7347726757 0.7709477365 0.5799853499
## [91] 0.5110989846 0.8529837073 0.6298211562 0.5790059080 0.7402492894 0.3871497631 0.9935344572 0.3980894811 0.9750010339
## [100] 0.8244822009
#using normal approximation
mean_ci <- function(x, conf=0.95){
se <- sd(x)/sqrt(length(x))
alpha <- 1-conf
mean(x)+se*qnorm(c(alpha/2, 1-alpha/2))
}
mean_ci(x)
## [1] 0.4354841 0.5435638
## [1] 0.4185035 0.5605444
wt_mean <- function(x,w){
if(length(x) != length(w)){
stop("'x' and 'w' must be the same legth", call. = T)
}
sum(w*x)/sum(x)
}
?stop #call.=F won't return the "systematic" error message
wt_mean(1:3, 1:3)
## [1] 2.333333