2017-03-03 6 views
1

factor列を文字に変換するためにdplyrのmutate_ifを使用していますが、要素列がない場合はすべてを文字に変更します。述語がすべての列に対してFALSEの場合、dplyr mutate_ifは機能しません

if(length(dplyr:::probe_colwise_names(x, is.factor)) > 0) 
    x <- mutate_if(x, is.factor, as.character) 

を行うことによって、それラウンドを取得することができ

> x <- data.frame(a = c(1,2,3), b = c(4,5,6)) 
> str(x) 
'data.frame': 3 obs. of 2 variables: 
$ a: num 1 2 3 
$ b: num 4 5 6 
> str(mutate_if(x, is.factor, as.character)) 
'data.frame': 3 obs. of 2 variables: 
$ a: chr "1" "2" "3" 
$ b: chr "4" "5" "6" 

アム下記参照しかし、私は何か間違ったことをやっているか、これはdplyrのバグですか?

+1

バージョンは、あなたがオンになっていますか?それは私のために意図されたように働いています。 'packageVersion( 'dplyr') '0.5.0.9000'' – GGamba

+0

私は0.5.0を使用しています。これはCRANの最新バージョンだと思います。私は0.5.0.9000がgithubからインストールされたバージョンで、まだCRANにはリリースされていないと思いますか? – user1165199

+0

はい、 'x.x.x.9xxx'は開発版です。 – Axeman

答えて

1

確かに、これで遊んで、(dplyrバージョン0.5.0)と同じ結論に達しました。

それは、すぐに少なくとも一つの列が要因であるとして動作します:

x$a <- factor(x$a) 
str(mutate_if(x, is.factor, as.character)) 
    'data.frame': 3 obs. of 2 variables: 
    $ a: chr "1" "2" "3" 
    $ b: num 4 5 6 

しかしdplyrのではないそう

関連する問題