#r #vector
#r #вектор
Вопрос:
Следующий код повторяет вектор c(3,4)
дважды, чтобы заполнить фрейм данных.
> data.frame(x=c(1,2,5,6), y=c(3,4))
x y
1 1 3
2 2 4
3 5 3
4 6 4
Как именно называется это поведение, и есть ли хорошая ссылка на то, как оно работает?
Я уверен, что этот вопрос задавался миллион раз, но я просто не могу вспомнить термины, Поэтому все мои поиски «повторения вектора r» и т. Д. Идут Не в то место.
Комментарии:
1. Это известно как переработка значений!
2. Смотрите определение языка R: cran.r-project.org/doc/manuals/r-release /…
Ответ №1:
То, что вы ищете, известно как значения рециркуляции. Можно видеть, что data.frame()
функция для создания прямоугольной структуры с определенным количеством строк и столбцов будет размещать значения в соответствии с длиной фрейма данных. Например:
#Code 1
df <- data.frame(v1=rnorm(10,1,1),v2=1)
Вывод:
v1 v2
1 2.54778001 1
2 -0.69632427 1
3 1.51183106 1
4 1.68531980 1
5 -0.70046933 1
6 1.40192042 1
7 -0.09775118 1
8 2.07676738 1
9 1.82864514 1
10 1.82787072 1
В этом случае v2
оно будет повторно использовано 1 раз из-за его длины. Теперь еще один пример:
#Code 2
df <- data.frame(v1=rnorm(10,1,1),v2=1:2)
Вывод:
v1 v2
1 0.4479530 1
2 1.4414374 2
3 -0.6545890 1
4 0.6860653 2
5 0.5052426 1
6 0.8525879 2
7 1.6122026 1
8 0.4432882 2
9 2.1471107 1
10 -0.7284869 2
По той же логике функция будет перерабатывать значения в соответствии с длиной наибольшего вектора. Просто будьте осторожны, чтобы переработка выполнялась, когда длина векторов кратна. Это когда у них есть общий фактор. Например, df <- data.frame(v1=rnorm(10,1,1),v2=1:3)
приведет к ошибке, но df <- data.frame(v1=rnorm(9,1,1),v2=1:3)
будет работать нормально.
Ответ №2:
Мы также можем использовать tibble
library(tibble)
tibble(v1=rnorm(10,1,1),v2=1)
# A tibble: 10 x 2
# v1 v2
# <dbl> <dbl>
# 1 -0.524 1
# 2 1.41 1
# 3 0.0863 1
# 4 0.344 1
# 5 -0.0997 1
# 6 0.214 1
# 7 -0.362 1
# 8 2.80 1
# 9 0.707 1
#10 0.955 1