Nên mua gì
Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 78 trên 78.
Thử thách
DễTạo một hàm có tên what_to_buy nhận hai đối số: budget (một giá trị số) và prices (một vector có tên chứa giá các món đồ). Hàm cần trả về một vector ký tự chứa tên của tất cả các món đồ có giá nhỏ hơn hoặc bằng ngân sách.
Nếu không có món đồ nào vừa túi tiền, hãy trả về một vector ký tự rỗng bằng cách dùng character(0).
Bạn sẽ nhận các đầu vào sau:
- Số tiền ngân sách (một số)
- Danh sách tên các món đồ được phân tách bằng dấu phẩy (ví dụ:
apple,banana,steak,bread) - Danh sách giá tương ứng được phân tách bằng dấu phẩy (ví dụ:
2,1,15,3)
Phân tích các đầu vào để tạo một vector giá có tên, gọi hàm của bạn và in ra kết quả. Dùng print() để hiển thị vector ký tự được trả về.
Ví dụ, nếu đầu vào là:
5
apple,banana,steak,bread
2,1,15,3Đầu ra sẽ là:
[1] "apple" "banana" "bread"Nếu đầu vào là:
10
laptop,phone,tablet
999,599,399Đầu ra sẽ là:
character(0)Gợi ý:
- Dùng
strsplit(input, ",")[[1]]để tách các chuỗi được phân tách bằng dấu phẩy thành các vector - Dùng
as.numeric()để chuyển các chuỗi giá thành số - Dùng
names(prices) <- item_namesđể tạo một vector có tên - Dùng chỉ số logic cùng với
names()để lấy tên các món đồ vừa túi tiền
Tự làm thử
# Đọc đầu vào
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Phân tích các giá trị đầu vào
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])
# Tạo vector giá có tên
prices <- price_values
names(prices) <- item_names
# TODO: Viết hàm (function) what_to_buy bên dưới
# Hàm nhận budget và prices làm đối số
# và trả về vector ký tự chứa tên các mặt hàng vừa túi tiền
# Gọi hàm và in ra kết quả
result <- what_to_buy(budget, prices)
print(result)Tất cả bài học trong Kiến thức nền tảng
4Toán tử phần 2
Toán tử logic (AND, OR)Toán tử logic phần 2 (NOT)Ôn tập: logic đơn giảnLogic vector hóa phần 1Logic vector hóa phần 22Biến và kiểu dữ liệu
Kiểu dữ liệu sốKiểu dữ liệu số nguyênKiểu dữ liệu ký tựKiểu dữ liệu logicKiểm tra kiểu dữ liệuQuy tắc đặt tênGiá trị thiếu: NATóm tắt: tạo biến8Vòng lặp
Vòng lặp forVòng lặp whileBreakNext (continue)Ôn tập: giai thừaTạo dãy (seq, :)Vòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcPhép chia lấy phần nguyên và phép moduloToán tử gánÔn tập: phép tính đơn giảnToán tử so sánh6Nhập xuất cơ bản
In đầu raDùng cat để in đầu raĐầu ra với biếnĐọc đầu vào bằng readline()Cơ bản về chuyển đổi kiểuÔn tập: máy tính tuổiÔn tập: đúng hay sai9Hàm
Khai báo hàmĐối số hàmGiá trị trả vềÔn tập: hàm SigmaÔn tập: hàm xác thựcGiá trị tham số mặc địnhTự luyện tập: Trình biên dịch R online