132 lines
2.1 KiB
R
132 lines
2.1 KiB
R
## R Script Sample File
|
|
## Source: http://www.rexamples.com
|
|
|
|
## Basics
|
|
a <- 42.24
|
|
a <- 42i
|
|
a <- 42L
|
|
a <- 42
|
|
A <- a * 2 # R is case sensitive
|
|
print(a)
|
|
cat(A, "\n") # "84" is concatenated with "\n"
|
|
if(A>a) # true, 84 > 42
|
|
{
|
|
cat(A, ">", a, "\n")
|
|
}
|
|
|
|
## Functions
|
|
Square <- function(x) {
|
|
return(x^2)
|
|
}
|
|
|
|
print(Square(4))
|
|
print(Square(x=4)) # same thing
|
|
|
|
DoSomething(color="red",number=55)
|
|
|
|
## Countdown
|
|
countdown <- function(from)
|
|
{
|
|
print(from)
|
|
while(from!=0)
|
|
{
|
|
Sys.sleep(1)
|
|
from <- from - 1
|
|
print(from)
|
|
}
|
|
}
|
|
|
|
countdown(5)
|
|
|
|
## Reading user input
|
|
readinteger <- function()
|
|
{
|
|
n <- readline(prompt="Enter an integer: ")
|
|
n <- as.integer(n)
|
|
if (is.na(n)){
|
|
n <- readinteger()
|
|
}
|
|
return(n)
|
|
}
|
|
print(readinteger())
|
|
|
|
readinteger <- function()
|
|
{
|
|
n <- readline(prompt="Enter an integer: ")
|
|
if(!grepl("^[0-9]+$",n))
|
|
{
|
|
return(readinteger())
|
|
}
|
|
|
|
return(as.integer(n))
|
|
}
|
|
print(readinteger())
|
|
|
|
## Guess a random number game
|
|
readinteger <- function()
|
|
{
|
|
n <- readline(prompt="Enter an integer: ")
|
|
if(!grepl("^[0-9]+$",n))
|
|
{
|
|
return(readinteger())
|
|
}
|
|
return(as.integer(n))
|
|
}
|
|
|
|
# real program start here
|
|
|
|
num <- round(runif(1) * 100, digits = 0)
|
|
guess <- -1
|
|
|
|
cat("Guess a number between 0 and 100.\n")
|
|
|
|
while(guess != num)
|
|
{
|
|
guess <- readinteger()
|
|
if (guess == num)
|
|
{
|
|
cat("Congratulations,", num, "is right.\n")
|
|
}
|
|
else if (guess < num)
|
|
{
|
|
cat("It's bigger!\n")
|
|
}
|
|
else if(guess > num)
|
|
{
|
|
cat("It's smaller!\n")
|
|
}
|
|
}
|
|
|
|
## Lists
|
|
sum(0:9)
|
|
append(LETTERS[1:13],letters[14:26])
|
|
c(1,6,4,9)*2
|
|
something <- c(1,4,letters[2]) # indices start at one, you get (1,4,"b")
|
|
length(something)
|
|
|
|
## margrittr's pipe
|
|
diamonds %>%
|
|
filter(price > 1000) %>%
|
|
group_by(cut) %>%
|
|
tally() %>%
|
|
rename(tally = n) %>%
|
|
arrange(-tally) %>%
|
|
mutate(pct = tally / sum(tally)) -> df
|
|
|
|
## R native pipes (R > 4.1)
|
|
Sys.setenv("_R_USE_PIPEBIND_"= TRUE)
|
|
mtcars |> x => lm(mpg ~ cyl, data = x)
|
|
|
|
## ggplot2
|
|
plot = ggplot(diamonds, aes(x = price, y = carat)) +
|
|
geom_point(alpha = 0.3, colour = 'steelblue') +
|
|
labs(
|
|
title = "ggplot diamonds",
|
|
x = "Price, $",
|
|
y = "Carat"
|
|
) +
|
|
facet_wrap(~ cut) +
|
|
theme_minimal()
|
|
|
|
plot + coord_flip()
|