У меня проблема, которую я просто не понимаю.
Я хотел бы собрать строки в зависимости от количества символов:
вектор c("1", "23", "302", "2004")
должен быть преобразованв c("1900001", "1900023", "1900302", "1902004")
.
Поэтому я использовал этот код:
test <- c("1", "23", "302", "2004")
fun_function <- function(test){
if(nchar(test == 4)){
str_c("190",test, sep="")
} else {
if(nchar(test == 3)){
str_c("1900", test, sep="")
} else{
if(nchar(test == 2)){
str_c("19000", test, sep="")
} else{
if(nchar(test == 1)){
str_c("190000", test, sep="")
}
}
}
}
}
res <- map(test,
~fun_function(.x)) %>%
unlist()
Однако вместо получения c("1900001", "1900023", "1900302", "1902004")
я получаю c("1901", "19023", "190302", "1902004")
.
Теперь, почему я получил этот вектор?Если я использую эту функцию для одного случая, она работает:
nchar("1") == 1
str_c("190000", "1", sep="")
Итак, в чем проблема?Я просто не понимаю причину моего результата.Может кто-то помочь мне с этим?Я также попытался использовать цикл For Loop, используя ту же логику, но она тоже не работает.