if - εντολές διακλάδωσης
Το βίντεο έχει διάρκεια 40:25. Πιθανά να χρειάζεται λίγος χρόνος για την προβολή του.
R; rstats; if; else; ifelse
## http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=988
## https://www.youtube.com/watch?v=vKFz2s6QYyQ
# logical expression
10 > 5
# if function, do something if expression is TRUE
if(10 > 5)
print("yes, it is bigger")
# Curly braces, not necessary with just one command, but always recommended
if(10 > 5) {
print("yes, it is bigger")
}
# Curly braces, always necessary with more than one command
if(10 > 5) {
print("yes, it is bigger")
print("for sure")
}
# Conditional assignment of a variable
x <- 10
if(x > 5) {
a <- 1
}
a
# else : do something if conditions is not TRUE
if(x < 5) {
a <- 1
} else {
a <- 0
}
a
# Conditional assignment of a variable, check if NA
x <- NA
if(is.na(x) == TRUE) {
a <- 1
}
a
# Conditional assignment of a variable, check if exists
y <- 10
if(exists("y") == TRUE) {
a <- 1
} else {
a <- 0
}
a
# Combine two rules, with AND or OR
x <- 10
y <- -2
if(x > 0 & y > 0) {
print("both positives")
}
if(x > 0 & y > 0) {
print("both positives")
} else {
print("No, they are not both positives")
}
x <- 10; y <- -2
# & AND operator
if(x > 0 & y > 0) {
print("both positives")
} else if (x < 0 & y < 0) {
print("both negatives")
} else {
print("one positive, one negative")
}
x <- -10; y <- -2
# | OR operator
if(x > 0 | y > 0) {
print("at least one is positive")
} else {
print("no one is positive")
}
# Nested if structures
x <- 10
y <- 0
if(x == 0) {
if(y == 0) {
print("both are zero")
} else {
print("first is zero, second is not")
}
} else {
if(y == 0) {
print("first is not zero, second is zero")
} else {
print("both are not zero")
}
}
# ifelse assignment, similar to MS EXCEL
x <- 10
ifelse(x > 0, 1, -1)
y <- ifelse(x > 0, 1, -1)
y
# It works for vectors as well
x <- c(-6, 5, 0, 3, 1)
y <- ifelse(x > 0, 1, -1)
y
# Attention, how to check results sensitive to machine precision
1 == 0.999999
all.equal(1, 0.999999)
.Machine$double.eps
# Here we expect two numbers to be equal if they differ to sixth digit
all.equal(1, 0.999999, tolerance = 1e-5)
all.equal(0, 0.0000001, tolerance = 1e-5)
abs(0 - 0.0000001) > 1e-5
if(all.equal(1, 0.999999, tolerance = 1e-5) == TRUE) {
print("equal numbers")
}
Συνδεθείτε για περισσότερες δυνατότητες αλληλεπίδρασης,
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.
Εκπαιδευτικό υλικό από τον
Αθανάσιο Σταυρακούδη
σας παρέχετε κάτω από την άδεια
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.