2017-08-07 2 views
0

Ich habe den folgenden hässlichen Code von R, und ich möchte nur vereinfachen, so dass der Code praktischer ist und weniger Zeilen aufnimmt. Es ist genau derselbe Befehl, der immer und immer wieder ausgeführt wird.Wie kann ich meinen Code in R vereinfachen?

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) 

Danke

Antwort

5

Wenn nichts in ein Faktor ist:

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

Wenn Sie Faktoren zu tun haben, können Sie mit as.character konvertieren müssen zuerst:

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

Wenn Sie nicht direkt konvertieren möchten, müssen Sie den Ausdruck lapply mitumbrechen.

1

Das allgemeine Muster werden Sie wollen folgen

  1. die Spalten identifizieren, die geändert werden müssen.
  2. Verwenden lapply

Wenn Sie nur Zeichenwerte konvertieren möchten, können Sie

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

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

verwenden Wenn Sie nur eine ganz bestimmte Liste von Zeichenwerte zu konvertieren, wird in etwa so funktionieren.

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) 

Wenn Sie eine Mischung aus Zeichen und Faktoren, Matthew Antwort funktioniert gut.

Verwandte Themen