2016-04-25 16 views
1

Wie kann ich die Spalten 1 und 2 in numerische konvertieren? Ich habe das versucht, was mir offensichtlich erschien, war es aber nicht.as.numeric auf Teilmenge von Datenrahmen

Dank

df <- data.frame(v1 = c(1,2,'x',4,5,6), v2 = c(1,2,'x',4,5,6), v3 = c(1,2,3,4,5,6), stringsAsFactors = FALSE) 
as.numeric(df[,1:2]) 
+4

'df [1: 2] <- lapply (df [1: 2], as.numeric)' ' – akrun

+1

df [ , 1: 2] <- as.numerisch (as.matrix (df [, 1: 2])) ' – jogo

Antwort

2

Wir können lapply Schleife über die Spalte von Interesse verwenden und numerischen

df[1:2] <- lapply(df[1:2], as.numeric) 
0

Ich schlage vor, diesen Ansatz zu konvertieren, mit unlist. Ich mag besonders den One-Line-Ansatz, wenn möglich. Und für weitere Optionen und Referenzen, empfehle ich dringend diese schöne post.

df <- data.frame(v1 = c(1,2,'x',4,5,6), v2 = c(1,2,'x',4,5,6), 
v3 = (1,2,3,4,5,6), stringsAsFactors = FALSE) 

df[, c("v1","v2")] <- as.numeric(as.character(unlist(df[, c("v1","v2")]))) 
Warning message: 
NAs introduced by coercion 

str(df) 
data.frame': 6 obs. of 3 variables: 
    $ v1: num 1 2 NA 4 5 6 
    $ v2: num 1 2 NA 4 5 6 
    $ v3: num 1 2 3 4 5 6 
0

Sie Matrix Indizierung ohne versteckte Schleifen verwenden können:

df[, 1:2] <- as.numeric(as.matrix(df[, 1:2])) 
Verwandte Themen