パーセンテージ値を生成する関数をプログラムしました。値をデータフレームに渡すと、書式設定は失われます。例えば99.90%は0.9990になるでしょう。これを説明するためにいくつかの簡単なコード(1列目は、私はすべての列に割合を望んでいないことを示すためである):パーセンテージ値をデータフレームに渡すときのフォーマットの割合を保持する
DT = data.frame(matrix(0,nrow=1,ncol=5), stringsAsFactors = FALSE)
DT[1,1] = 100
DT[1,2:5] = percent(c(0.9999,0.4567,0.3256,0.7777))
DT
X1 X2 X3 X4 X5
1 100 0.9999 0.4567 0.3256 0.7777
私はパーセンテージの書式を維持するために、私はデータフレームをフォーマットする必要があり、ことに気づきましたあらかじめ。
DT[,2] = percent(DT[,2])
DT[,3] = percent(DT[,3])
...
をしかし、それは少し面倒です。しかし、私はそうすることができる列
によってカラムには、これは動作します。残念ながら、歩留まり以下の両方の線と同じエラー
DT[,c(2,3,4,5)] = percent(DT[,c(2,3,4,5)])
DT[,2:5] = percent(DT[,2:5])
Error in UseMethod("percent") :
no applicable method for 'percent' applied to an object of class "data.frame"
また、これは動作しません:
- 維持する方法は:
DT[,2:5] = apply(DT[,2:5],MARGIN = 2 ,FUN=percent)
従って私はそこにあるかどうかを疑問に思いましたデータフレームに渡されたときの値のパーセント書式。後者の場合、書式がどのようなものであるかを事前に指定していない場合。;または、
- データフレームの多数の列にパーセント形式を割り当てる効率的な方法。
私のシステムでは、最初のコードブロックが '100 100.0%45.7%32.6%77.8% 'になります(つまり、パーセント形式はそのままです)。あなたはどのパーセント()を使っていますか?私は 'scales :: percent()'を使いました。 – hrbrmstr
このパッケージは 'percent()'関数がどこから来たものかと思っていたので、 'library(scales)'を含むように投稿を編集しました。 @hrbrmstrによるコメントの読み方私は、その名前の他の関数があるかもしれないことを認識しています。使用したライブラリを指定してください。 – RHertel
私はformattableからパーセント()を使用していました。スケールをスケールに変更すると、目的の結果が得られます。ありがとう! – koteletje