ただの小ネタで備忘録です。
困ったこと
次のような文をR Markdownで書いたときに、kableの表が表示されなくて困ったことがありました。
# ```{r}
files <- list.files(path, pattern=".csv")
for (csv.file in list.file){
df <- read.csv(csv.file)
knitr::kable(summary(df)) #問題の箇所
}
# ```
(RMarkdownのchunk区切りをそのまま表示できないので、苦し紛れにコメントしてます。)
これを実行してもkableの表は出力されません。forの外なら出力されるのに。。
解決方法
stack overflowにドンピシャの解決方法が載っておりがあり、これにならって書き直して実行したら無事に出力されました。```{r results="asis"}を指定して、kableの箇所はprintで出力されるようにする必要がありましたという話。
# ```{r results = "asis"}
files <- list.files(path, pattern=".csv")
for (csv.file in list.file){
df <- read.csv(csv.file)
print(knitr::kable(summary(df))) #問題の箇所
cat("\n")
}
# ```
終わりに
まあ、Rではfor文はあまり好まれませんし、他のやり方をした方がいいのかなとは思います。
参考文献
Stack overflow - R: why kable doesn't print inside a for loop?