2017-08-07 7 views
0

私はRから次の醜いコードを持っています。私は単純化したいので、コードはより実用的であり、行を少なくします。それは同じコマンドが繰り返し実行されているだけです。あなたは要因を持っている場合は、あなたが最初にas.characterに変換する必要がありRでコードを単純化するにはどうすればよいですか?

x[] <- lapply(x, as.numeric)) 

x[] <- lapply(x, function(y) as.numeric(as.character(y))) 

何も内部要因がない場合

x$Avg..session.duration..seconds.<- 
as.numeric(x$Avg..session.duration..seconds.) 
x$All.conv..value...cost<- as.numeric(x$All.conv..value...cost) 
x$All.conv..value <- as.numeric(x$All.conv..value) 
x$Interactions<- as.numeric(x$Interactions) 
x$Views<- as.numeric(x$Views) 
x$Total.cost<- as.numeric(x$Total.cost) 
x$Avg..CPM<- as.numeric(x$Avg..CPM) 
x$Cost<- as.numeric(x$Cost) 
x$Impressions <- as.numeric(x$Impressions) 
x$Clicks<- as.numeric(x$Clicks) 
x$Bounce.rate <- as.numeric(x$Clicks) 

はあなたに

答えて

5

ありがとうございましたインプレースで変換したくない場合は、lapplyの式をでラップします。

1

あなたが従うことになるでしょう一般的なパターンを変更する必要が列を識別

  1. です。
  2. 使用lapply

あなただけの文字値を変換したい場合は、あなたが変換する文字値の非常に特定のリストを持っている場合は、このような何かがうまくいく

# Identify character values (all character values) 
to_num <- vapply(X, is.character, logical(1)) 

X[to_num] <- lapply(X[to_num], as.numeric) 

を使用することができます。

to_num <- c("Avg..session.duration..seconds.", 
      "All.conv..value...cost", 
      "All.conv..value", 
      "Interactions", 
      "Views") 
X[to_num] <- lapply(X[to_num], as.numeric) 

文字と要素が混在している場合は、マシューの答えがうまくいきます。

関連する問題