# Create vectors
id <- c("001", "002", "003", "004", "005")
name <- c("superman", "batman", "spiderman", "wolverine", "wonderwoman")
height <- c(190, 188, 178, 150, 183)
weight <- c(102, 95, 76, 88, 59)
gender <- c("Male", "Male", "Male", "Male", "Female")
# Inspect the class of each vector
print(class(name))
## [1] "character"
print(class(height))
## [1] "numeric"
print(class(gender))
## [1] "character"
print(class(id))
## [1] "character"
# Logical vector example
q <- height > 170
print(q)
## [1] TRUE TRUE TRUE FALSE TRUE
print(class(q))
## [1] "logical"
# Access vector elements
print(name)
## [1] "superman" "batman" "spiderman" "wolverine" "wonderwoman"
print(name[2])
## [1] "batman"
print(name[3:5])
## [1] "spiderman" "wolverine" "wonderwoman"
print(name[-1])
## [1] "batman" "spiderman" "wolverine" "wonderwoman"
print(name[-c(1,3,5)])
## [1] "batman" "wolverine"
print(height)
## [1] 190 188 178 150 183
print(height[height > 170])
## [1] 190 188 178 183
# Create a data frame
heroes <- data.frame(id, gender, height, weight, name)
# Display the data frame
print(heroes)
## id gender height weight name
## 1 001 Male 190 102 superman
## 2 002 Male 188 95 batman
## 3 003 Male 178 76 spiderman
## 4 004 Male 150 88 wolverine
## 5 005 Female 183 59 wonderwoman
# Save the data frame to an .RData file
save(heroes, file = "heroes.RData")
# Clear the workspace and reload the data frame
rm(list = ls())
load("heroes.RData")
# Access data frame elements
print(heroes[2, ])
## id gender height weight name
## 2 002 Male 188 95 batman
print(heroes[, 2])
## [1] "Male" "Male" "Male" "Male" "Female"
print(heroes[5, ])
## id gender height weight name
## 5 005 Female 183 59 wonderwoman
print(heroes[3, 4])
## [1] 76
print(heroes[["name"]])
## [1] "superman" "batman" "spiderman" "wolverine" "wonderwoman"
print(heroes$name)
## [1] "superman" "batman" "spiderman" "wolverine" "wonderwoman"
print(heroes$height)
## [1] 190 188 178 150 183
print(mean(heroes$height))
## [1] 177.8
print(heroes[1:3, ])
## id gender height weight name
## 1 001 Male 190 102 superman
## 2 002 Male 188 95 batman
## 3 003 Male 178 76 spiderman
print(heroes[heroes$name == "spiderman", ])
## id gender height weight name
## 3 003 Male 178 76 spiderman
print(heroes[heroes$name != "spiderman", ])
## id gender height weight name
## 1 001 Male 190 102 superman
## 2 002 Male 188 95 batman
## 4 004 Male 150 88 wolverine
## 5 005 Female 183 59 wonderwoman
print(heroes[heroes$height > 180, ])
## id gender height weight name
## 1 001 Male 190 102 superman
## 2 002 Male 188 95 batman
## 5 005 Female 183 59 wonderwoman
print(sort(heroes$height))
## [1] 150 178 183 188 190
print(sort(heroes$height, decreasing = TRUE))
## [1] 190 188 183 178 150
# Basic bar plot
barplot(sort(heroes$height, decreasing = TRUE))

# Customized bar plot
barplot(
sort(heroes$height, decreasing = TRUE),
main = "Heroes",
sub = "by Peter Liu",
names.arg = c("superman", "batman", "spiderman", "wonderwoman", "wolverine"),
xlab = "Name",
ylab = "Height",
col = c(1:5)
)

# Create data
nation <- c("Korea", "Taiwan", "Hong Kong", "Singapore")
growth <- c(0.36, 0.28, 0.83, 1.40)
data <- data.frame(nation = nation, growth = growth)
# Sort data by growth
sorted_data <- data[order(-data$growth), ]
# Bar plot for Asian Tigers
barplot(
sorted_data$growth,
main = "亞洲四小龍經濟成長率",
sub = "by ANNIEY",
names.arg = sorted_data$nation,
xlab = "Nation",
ylab = "Growth",
col = c("pink", "skyblue", "gray", "purple"),
ylim = c(0, max(sorted_data$growth) + 0.5)
)

# Load and inspect the iris dataset
df <- iris
print(head(df))
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
print(str(df))
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
## NULL
print(summary(df))
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
print(names(df))
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
print(df[1:10, 3])
## [1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5
print(df$Species)
## [1] setosa setosa setosa setosa setosa setosa
## [7] setosa setosa setosa setosa setosa setosa
## [13] setosa setosa setosa setosa setosa setosa
## [19] setosa setosa setosa setosa setosa setosa
## [25] setosa setosa setosa setosa setosa setosa
## [31] setosa setosa setosa setosa setosa setosa
## [37] setosa setosa setosa setosa setosa setosa
## [43] setosa setosa setosa setosa setosa setosa
## [49] setosa setosa versicolor versicolor versicolor versicolor
## [55] versicolor versicolor versicolor versicolor versicolor versicolor
## [61] versicolor versicolor versicolor versicolor versicolor versicolor
## [67] versicolor versicolor versicolor versicolor versicolor versicolor
## [73] versicolor versicolor versicolor versicolor versicolor versicolor
## [79] versicolor versicolor versicolor versicolor versicolor versicolor
## [85] versicolor versicolor versicolor versicolor versicolor versicolor
## [91] versicolor versicolor versicolor versicolor versicolor versicolor
## [97] versicolor versicolor versicolor versicolor virginica virginica
## [103] virginica virginica virginica virginica virginica virginica
## [109] virginica virginica virginica virginica virginica virginica
## [115] virginica virginica virginica virginica virginica virginica
## [121] virginica virginica virginica virginica virginica virginica
## [127] virginica virginica virginica virginica virginica virginica
## [133] virginica virginica virginica virginica virginica virginica
## [139] virginica virginica virginica virginica virginica virginica
## [145] virginica virginica virginica virginica virginica virginica
## Levels: setosa versicolor virginica
# Modify column names
names(df) <- c("花萼長", "花萼寬", "花瓣長", "花瓣寬", "品種")
# Filter data
print(df[df$花萼長 >= 7, ])
## 花萼長 花萼寬 花瓣長 花瓣寬 品種
## 51 7.0 3.2 4.7 1.4 versicolor
## 103 7.1 3.0 5.9 2.1 virginica
## 106 7.6 3.0 6.6 2.1 virginica
## 108 7.3 2.9 6.3 1.8 virginica
## 110 7.2 3.6 6.1 2.5 virginica
## 118 7.7 3.8 6.7 2.2 virginica
## 119 7.7 2.6 6.9 2.3 virginica
## 123 7.7 2.8 6.7 2.0 virginica
## 126 7.2 3.2 6.0 1.8 virginica
## 130 7.2 3.0 5.8 1.6 virginica
## 131 7.4 2.8 6.1 1.9 virginica
## 132 7.9 3.8 6.4 2.0 virginica
## 136 7.7 3.0 6.1 2.3 virginica
print(nrow(df[df$花萼長 >= 7, ]))
## [1] 13
print(df[df$品種 == "setosa", ])
## 花萼長 花萼寬 花瓣長 花瓣寬 品種
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5.0 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## 11 5.4 3.7 1.5 0.2 setosa
## 12 4.8 3.4 1.6 0.2 setosa
## 13 4.8 3.0 1.4 0.1 setosa
## 14 4.3 3.0 1.1 0.1 setosa
## 15 5.8 4.0 1.2 0.2 setosa
## 16 5.7 4.4 1.5 0.4 setosa
## 17 5.4 3.9 1.3 0.4 setosa
## 18 5.1 3.5 1.4 0.3 setosa
## 19 5.7 3.8 1.7 0.3 setosa
## 20 5.1 3.8 1.5 0.3 setosa
## 21 5.4 3.4 1.7 0.2 setosa
## 22 5.1 3.7 1.5 0.4 setosa
## 23 4.6 3.6 1.0 0.2 setosa
## 24 5.1 3.3 1.7 0.5 setosa
## 25 4.8 3.4 1.9 0.2 setosa
## 26 5.0 3.0 1.6 0.2 setosa
## 27 5.0 3.4 1.6 0.4 setosa
## 28 5.2 3.5 1.5 0.2 setosa
## 29 5.2 3.4 1.4 0.2 setosa
## 30 4.7 3.2 1.6 0.2 setosa
## 31 4.8 3.1 1.6 0.2 setosa
## 32 5.4 3.4 1.5 0.4 setosa
## 33 5.2 4.1 1.5 0.1 setosa
## 34 5.5 4.2 1.4 0.2 setosa
## 35 4.9 3.1 1.5 0.2 setosa
## 36 5.0 3.2 1.2 0.2 setosa
## 37 5.5 3.5 1.3 0.2 setosa
## 38 4.9 3.6 1.4 0.1 setosa
## 39 4.4 3.0 1.3 0.2 setosa
## 40 5.1 3.4 1.5 0.2 setosa
## 41 5.0 3.5 1.3 0.3 setosa
## 42 4.5 2.3 1.3 0.3 setosa
## 43 4.4 3.2 1.3 0.2 setosa
## 44 5.0 3.5 1.6 0.6 setosa
## 45 5.1 3.8 1.9 0.4 setosa
## 46 4.8 3.0 1.4 0.3 setosa
## 47 5.1 3.8 1.6 0.2 setosa
## 48 4.6 3.2 1.4 0.2 setosa
## 49 5.3 3.7 1.5 0.2 setosa
## 50 5.0 3.3 1.4 0.2 setosa
df_setosa <- df[df$品種 == "setosa", ]
# Save filtered data
save(df_setosa, file = "df_setosa.RData")
# Attempt to load the file
if (file.exists("heroes_stats.RData")) {
load("heroes_stats.RData")
# Inspect the data
print(head(heroes_stats))
print(str(heroes_stats))
print(summary(heroes_stats))
print(names(heroes_stats))
print(heroes_stats[1:5, c(1, 2, 9)])
print(heroes_stats$Alignment)
print(heroes_stats[heroes_stats$Power >= 95, ])
print(nrow(heroes_stats[heroes_stats$Power > 95, ]))
print(heroes_stats$Alignment)
print(heroes_stats[heroes_stats$Alignment == "good", ])
heroes_good <- heroes_stats[heroes_stats$Alignment == "good", ]
save(heroes_good, file = "heroes_good.RData")
print(subset(heroes_stats, grepl("man", Name)))
# Bar plot of selected heroes
superheroes <- c("iceman", "deadman", "aquaman", "batman", "darkman")
total_ability <- c(100, 100, 65, 37, 12)
barplot(
total_ability,
main = "超級英雄綜合能力",
sub = "by ANNIEY",
names.arg = superheroes,
xlab = "超級英雄",
ylab = "綜合能力值",
col = c("pink", "skyblue", "gray", "purple", "red")
)
} else {
print("The file 'heroes_stats.RData' does not exist.")
}
## [1] "The file 'heroes_stats.RData' does not exist."