2016-04-25 15 views
1

列1と2を数値に変換するにはどうすればよいですか?私はこのことを私には明白に思ったが、そうではなかった。as.numberデータフレームのサブセット

おかげ

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.numeric(as.matrix(df [、1:2])) ' – jogo

答えて

2

我々は関心の列をループにlapplyを使用して、私はunlistを使用して、このアプローチを提案し、数値

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

に変換することができます。可能であれば、私は特に「ワンライン」アプローチが好きです。さらに多くのオプションと参考資料については、この美しいものをお勧めします。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
何も隠されたループなし行列のインデックス付けを使用することができ

df[, 1:2] <- as.numeric(as.matrix(df[, 1:2])) 
関連する問題