5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rでforループ内にkable文を入れたら、表を出力してくれず困ったときの対処

Posted at

ただの小ネタで備忘録です。

困ったこと

次のような文を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?

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?