私は文字型である私のデータフレームの機能tolowerを変換しようと、このポストが判明した:
tolower
私がそうする機能を構築します最終的に私のすべての機能が文字として扱われることを発見しました! StackOverflowの上で、より良い探しsapplyとis.character()と異なる結果を与える適用
mytolower <- function(p_vector){
if (is.character(p_vector)) return(tolower(iconv(enc2utf8(p_vector), sub = "byte")))
else return(p_vector)
}
for (df in c("train", "test")) as.data.frame(apply(get(df), 2, function(x) mytolower(x)), stringsAsFactors = FALSE)
、私は部分的にlapply使用して問題を解決し、この第二のポストを見つけましたが、不思議なことが適用さを示唆しているとsapply仕事同様の方法で
lapply rather than apply
をこのように、私は最終的に構築基本的に私の悩みを示し、この例アップ:
train <- data.frame(v1=1:3, v2=c("a","b","c"), v3=11:13, stringsAsFactors = FALSE)
str(train)
apply(train, 2, function(x) is.character(x)) #wrong
lapply(train, function(x) is.character(x)) #right
sapply(train, function(x) is.character(x)) #right
sapply(train, is.character) #right
ながら数値や文字の特徴を区別することができるようになりますlapplyまたはsapply、「文字」であるとして、すべての機能を検討します適用します。それはなぜそうですか?適用を正しい答えを見つけるようにする方法はありますか? ありがとう