Напишите код, который запрашивает у пользователя его имя с клавиатуры и выводит на экран сообщение вида “Hello, name!”.
name <- readline(prompt = "Enter your name: ")
# вариант 1
cat("Hello, ", name, "!", sep = "")
# вариант 2
cat(sprintf("Hello, %s!", name))
Напишите код, который запрашивает у пользователя два дробных числа (одно число — один запрос) и выводит на экран их сумму. Решите эту задачу в предположении, что:
# точки
x1 <- as.numeric(readline("Enter a number: "))
x2 <- as.numeric(readline("Enter a number: "))
cat(x1 + x2)
# запятые
a_str <- gsub(",", ".",
readline("Enter a number: "))
a <- as.numeric(a_str)
b_str <- gsub(",", ".",
readline("Enter a number: "))
b <- as.numeric(b_str)
cat(a + b)
Напишите код, который запрашивает у пользователя значение скорости в километрах в час и выводит на экран значение скорости в метрах в секунду.
vel <- as.numeric(readline("Enter km/h:"))
cat(vel / 3.6)
Дан вектор g
, в котором хранятся следующие значения:
1, 0, 2, 3, 6, 8, 12, 15, 0, NA, NA, 9, 4, 16, 2, 0
Создайте вектор g
. Используя R, выведите на экран:
g <- c(1, 0, 2, 3, 6, 8, 12, 15, 0, NA, NA, 9, 4, 16, 2, 0)
# 1
g[1]
# 2
g[length(g)]
# 3
g[3:5]
# 4
g[g == 2]
# 5
g[g > 4]
# 6
g[g %% 3 == 0]
# 7
g[g < 1 | g > 5]
# 8
which(g == 0)
# 9
which(g >= 2 & g <= 8)
# 10
which((! g < 2) & (! g > 8))
Напишите код, который заменяет последний элемент любого вектора на пропущенное значение (NA
). Ваш код должен работать для вектора любой длины.
test <- c(6, 7, 3, 2, 7)
test[length(test)] <- NA
test
Напишите код, который выводит на экран индексы пропущенных значений в векторе.
which(is.na(test))
Напишите код, который считает, сколько пропущенных значений в векторе.
sum(is.na(test))
Напишите код, который позволяет создать вектор из id (уникальных номеров) респондентов, если известно, что в опросе участвовало 100 респондентов.
1:100
Решение задачи предполагает рациональное решение с помощью функций R, не нужно создавать вектора перечислением большого числа элементов вручную.
Известно, что в таблице хранятся показатели по 3 странам за 5 лет (см. ниже).
Создайте вектор который мог бы послужить столбцом country
в этой таблице. Создайте вектор, который мог бы послужить столбцом year
в этой таблице.
Таблица выглядит так:
country | year | |
1 | France | 2000 |
2 | France | 2001 |
3 | France | 2002 |
4 | France | 2003 |
5 | France | 2004 |
6 | Italy | 2000 |
7 | Italy | 2001 |
8 | Italy | 2002 |
9 | Italy | 2003 |
10 | Italy | 2004 |
11 | Spain | 2000 |
12 | Spain | 2001 |
13 | Spain | 2002 |
14 | Spain | 2003 |
15 | Spain | 2004 |
country <- rep(c("France", "Italy", "Spain"), each = 5)
year <- rep(2000:2004, 3)
# плюс, объединим эти векторы в таблицу
dat <- cbind.data.frame(country, year)
Исследователь решил создать вектор income
, в котором сохранены доходы нескольких респондентов:
income <- c(10000, 32000, 28000, 150000, 65000, 1573)
Исследователю нужно получить вектор income_class
, состоящий из 0 и 1: 0 ставится, если доход респондента ниже среднего дохода, а 1 — если больше или равен среднему доходу. Создайте вектор income_class
.
Подсказка: сначала можно посчитать среднее значение по вектору income и сохранить его в какую-нибудь переменную. Пользоваться встроенной функцией mean()
нельзя.
income <- c(10000, 32000, 28000, 150000, 65000, 1573)
m <- sum(income) / length(income)
income_class <- as.integer(income >= m)
income_class
В решении выше мы превратили логический вектор из TRUE и FALSE, который вернулся нам в результате проверки income >= m
в вектор целых чисел. При желании могли бы воспользоваться функцией ifelse()
:
# перечисляем: условие, значение в случае TRUE,
# значение в случае FALSE
ifelse(income >= m, 1, 0)