никогда не используйте c
в качестве имени переменной, поскольку c()
также является функцией.
a <- c("red", "blue", "yellow", "black");b<- c("blue", "yellow", "red", "pink");c1<- c("white", "black", "red", "blue")
обратите внимание на stringsAsFactors = F
часть.
df = data.frame(a,b,c1,stringsAsFactors = F)
lapply(df[[1]],utf8ToInt)
результат
# [[1]]
# [1] 114 101 100
#
# [[2]]
# [1] 98 108 117 101
#
# [[3]]
# [1] 121 101 108 108 111 119
#
# [[4]]
# [1] 98 108 97 99 107
Примечание: причина, по которой это не сработало, заключается в том, что factor
переменные внутренне кодируются как целочисленные значения:
utf8ToInt("red") #works
utf8ToInt(factor("red")) #does not work
utf8ToInt(1) #does not work
Чтобы преобразовать весь набор данных, вы можете преобразовать в matrix
.
lapply(as.matrix(df),utf8ToInt)
Читая ваш вопрос: Если вы хотите заменить «e» на «E», почему бы вам просто не использовать regEx?
df
a b c1
1 red blue white
2 blue yellow black
3 yellow red red
4 black pink blue
Затем используйте:
df[] <- sapply(as.matrix(df),gsub,pattern="e",replacement="E")
a b c1
1 rEd bluE whitE
2 bluE yEllow black
3 yEllow rEd rEd
4 black pink bluE