Если вы хотите a, b, f, d как 1,2,4,3, тогда используйте следующее
Я обновил ваш код для функции rc.fa немного
- Удален второй аргумент b, поскольку мы даем b <- NA, поэтому нам не нужен второй аргумент </li>
- Нам не нужна другая переменная для хранения значения b, поэтому яудалено z
- Так как каждый аргумент не является фактором, поэтому нам нужно привести его к фактору
- нам не нужен y, мы можем напрямую указать длину (a) для условия цикла
- и последняя, но не по значению последняя строка - это вывод функции, если только мы не используем return, поэтому я поставил b в последнем
Код:
rc.f <- function(a)
{
a<-as.factor(a)
x <- levels(a)
b <- NA
for (i in 1:length(a))
{
b[a==x[i]] <- i
}
b
}
давайте возьмем пример
> l<-c("a","b","b","a","a","g","h","y","f","v","h","j","f","d","a","s","s","s")
> l
[1] "a" "b" "b" "a" "a" "g" "h" "y" "f" "v" "h" "j" "f"
[14] "d" "a" "s" "s" "s"
> rc.f(l)
[1] 1 2 2 1 1 5 6 10 4 9 6 7 4 3 1 8 8 8
Если вы хотите a, b, f, d как 1,2,6,4, тогда используйте следующие
rc.f <- function(a)
{
a<-as.factor(a)
b <- NA
for (i in 1:26)
{
b[a==letters[i]] <- i
}
b
}
давайте рассмотрим пример
> l<-c("a","b","b","a","a","g","h","y","f","v","h","j","f","d","a","s","s","s")
> l
[1] "a" "b" "b" "a" "a" "g" "h" "y" "f" "v" "h" "j" "f" "d"
[15] "a" "s" "s" "s"
> rc.f(l)
[1] 1 2 2 1 1 7 8 25 6 22 8 10 6 4 1 19 19 19