私はベクトルを簡単にコード化することを望みます。具体的には、ベクトルをdplyr
のrecode
のような関数に渡す方法があるのだろうかと思います。私は準分数の基礎を理解していますが、=
をどのように組み込むのかが分かりません。Dpylrのrecode関数は多対1 R
library(tidyverse)
vec1 <- rep(LETTERS[1:7],7)
#standard way
vec2 <- recode(vec1,
"A" = "Value1",
"B" = "Value2",
"C" = "Value3",
"D" = "Value4",
"E" = "Value5",
"F" = "Value6",
"G" = "Value7"
)
vec3 <- recode(vec1,
"A" = "Value1",
"B" = "Value1",
"C" = "Value2",
"D" = "Value2",
.default = "Value other"
)
私は解決策を持っているだけでなく、...
と=
do.call(dplyr::recode,
c(list(vec1),
setNames(rep("Value1",length(val1)), val1),
setNames(rep("Value2",length(val2)), val2)))
私は機能を組み込む方法を見つけ出すことはできません、次の
vec3 <- some.function(vec1,
c("A", "B") = "Value1",
c("C", "D") = "Value2",
.default = "Value other"
)
をやってみたいです2つのベクトルを渡してすべての変数の名前を変更する方法を見つけました。
recode.by.vectors <- function(x, current.names, new.names){
do.call(dplyr::recode, c(list(x), setNames(new.names, current.names)))
}
最後に、私は基本的な解決策を知っています。
vec3 <- vec1
val1 <- c("A", "B")
val2 <- c("C", "D")
vec3[vec1 %in% val1] <- "Value1"
vec3[vec1 %in% val2] <- "Value2"
vec3[!vec1 %in% c(val1,val1)] <- "Value other"
ここで実行された割り当てをどのように関数に組み込むかはわかりません。