У меня есть именованный вектор, который по сути является таблицей поиска.Таким образом, имена каждого элемента представляют ключ, в то время как элемент представляет значение.
У меня есть фрейм данных, который содержит случайную выборку значений ключа, которые появляются в векторе выше.Мое намерение состоит в том, чтобы сопоставить ключ и получить значение для каждого ключа.
Это легко сделать с помощью mutate из пакета dplyr .Однако в процессе поиска я получаю сообщение об ошибке, если пытаюсь использовать [[ вместо [.Насколько я понимаю, для векторов обе функции должны возвращать вектор.
Может кто-нибудь объяснить, почему это происходит?Минимальный воспроизводимый пример приведен ниже.
x <- c("1" = "a", "2" = "b", "3" = "c")
df <- data.frame(
k = sample(c(1, 2, 3), 10, replace = TRUE),
v = rnorm(10)
)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df %>%
mutate(k2 = x[k])
#> k v k2
#> 1 1 -0.7502716 a
#> 2 1 -0.4002250 a
#> 3 1 0.4878860 a
#> 4 2 1.2878120 b
#> 5 3 0.6410854 c
#> 6 3 -0.6821807 c
#> 7 1 1.4106239 a
#> 8 3 0.9909921 c
#> 9 2 0.3808955 b
#> 10 3 1.6117826 c
df %>%
mutate(k2 = x[[k]])
#> Error in x[[k]]: attempt to select more than one element in vectorIndex