sapply

2017-07-14 6 views
0

で文字に列を変換する私はコラム私がsapply()で文字にこれらの列を変換しようとした場合の要因sapply

class(test) 
[1] "data.frame" 

sapply(test, class) 
    street  city state 
"factor" "factor" "factor" 

あり、何かがうまくいかないデータフレームtestを持っていると私は確信していない理由を

test <- as.data.frame(sapply(test, as.character)) 

sapply(test, class) 
    street  city state 
"factor" "factor" "factor" 

出力がすべての文字列であると思います。列が変換されない理由と、どのようにすべての要素列を文字に変換するのでしょうか?ここで

は、テストデータである:

> dput(test) 
structure(list(street = structure(c(5L, 1L, 6L, 2L, 3L, 4L), .Label = c("12057 Wilshire Blvd", 
"15300 Sunset Boulevard", "17380 Sunset Blvd", "1898 Westwood Blvd.", 
"3006 Sepulveda Blvd.", "514 Palisades Drive"), class = "factor"), 
    city = structure(c(1L, 1L, 2L, 2L, 2L, 3L), .Label = c("Los Angeles", 
    "Pacific Palisades", "Westwood"), class = "factor"), state = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L), .Label = "CA", class = "factor")), .Names = c("street", 
"city", "state"), row.names = c(NA, -6L), class = "data.frame") 
+3

'sapply(data.frame(sapply(テスト、as.character)、stringsAsFactors = FALSE)、クラス)' –

+3

デシベルさん@明確にするために'as.data.frame'を実行すると、デフォルトの引数' stringsAsFactors = TRUE'を持ち、 'sapply'で行った作業を元に戻します。 – Benjamin

答えて

1

これはまた、あなたのより多くの制御を与える必要があり、mutate_ifをお試しください:

mutate_if(test, is.factor, as.character) 
0

これはトリックを行う必要があり、それは、データフレームの各列にas.character関数を適用します。

test[] <- lapply(test, as.character) 

またはこの:

test <- modifyList(test, lapply(test, as.character)) 

それだけでas.data.frame

test <- as.data.frame(apply(test, 2, as.character), stringsAsFactors = FALSE) 
0

これを試してみてくださいとそれを包むことにより、データフレームに強制変換する必要がありますので、apply関数は、行列を返します。またはこれ:

test <- replace(test, TRUE, lapply(test, as.character)) 
関連する問題