더 쉬운 방법으로 벡터를 코드화하고 싶습니다. 특히 벡터를 dplyr
의 recode
과 같은 함수에 전달하는 방법이 있는지 궁금합니다. 나는 준 준법의 기초를 이해하지만, =
을 통합하는 방법을 알지 못한다.Dpylr의 recode 함수는 1 대 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"
)
을하고 싶습니다 두 벡터를 전달하고 모든 변수 이름을 바꿀 수있는 방법을 찾아 냈습니다.
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"
여기서는 수행 된 할당을 함수에 통합하는 방법을 알지 못합니다.