7

私は、1 つの問題を除いて、かなりうまく機能する最初の R ノートブックに取り組んでいます。インラインで出力する数値になりたい

`r realbignumber`

区切り記号としてコンマを使用し、小数点以下 2 桁まで: 123,456,789.12

これを実現するために、ドキュメントの先頭にチャンクを追加しました。これには...

```{r setup}
knitr::opts_chunk$set(echo = FALSE, warning=FALSE, cache = TRUE, message = FALSE)
knitr::opts_chunk$set(inline = function(x){if(!is.numeric(x)){x}else{prettyNum(round(x,1), big.mark = ",")}})
options(scipen=999)
```

科学的数値の抑制は魅力のように機能するため、チャンクは確実に実行されます。ただし、数値のインライン出力の書式設定は機能しません。

なぜそれが考えられるのでしょうか?これらの種類の設定は通常、R ノートブックでは機能しませんか?

編集:

ここで提案されている解決策も、数値の出力形式には影響しません。

4

1 に答える 1

1

これは、R Markdown ドキュメントで多数を印刷する 2 つの方法を示す例です。まず、prettyNum()インライン R チャンクで関数を使用するコードを作成します。

Sample document where we test printing a large number. First set the number in an R chunk. 
```{r initializeData}
theNum <- 1234567891011.03
options(scipen=999,digits=16)
```

The R code we'll use to format the number is: `prettyNum(theNum,width=23,big.mark=",")`.

Next, print the large number. `r prettyNum(theNum,width=23,big.mark=",")`.

チャンク オプションを使用する代わりの方法は次のとおりです。

 Now, try an alternative using knitr chunks.

 ```{r prettyNumHook }
 knitr::knit_hooks$set(inline = function(x) { if(!is.numeric(x)){ x }else{ prettyNum(x, big.mark=",",width=23) } })
 ```
 Next, print the large number by simply referencing the number in an inline chunk as `theNum`: `r theNum`. 

コードの両方のチャンクが Rmd ファイルに埋め込まれて編成されると、出力は次のようになります。これは、両方の手法で同じ結果が得られることを示しています。

ここに画像の説明を入力

よろしく、

レン

于 2017-11-24T21:12:20.617 に答える