• R语言
  • 在 Rstudio 是写.Rmd 文档生成 html 后,能否让同一个代码块多行代码的结果不分开?

举个例子,以下是一个 R 代码块:

```{r}
str1 <- "财政部 卫生健康委"
str2 <- "财政部 卫生健康委"
nchar(str1)
nchar(str2)
length(str1)
str1 == str2
```

现在生成html文档后的效果是

```{r}
str1 <- "财政部 卫生健康委"
str2 <- "财政部 卫生健康委"
nchar(str1)
```
## [1] 9
```{r}
nchar(str2)
```
## [1] 9
```{r}
length(str1)
```
## [1] 1
```{r}
str1 == str2
```
## [1] FALSE

我想要在生成 html 文档后的效果是

```{r}
str1 <- "财政部 卫生健康委"
str2 <- "财政部 卫生健康委"
nchar(str1)
nchar(str2)
length(str1)
str1 == str2
```
## [1] 9
## [1] 9
## [1] 1
## [1] FALSE

搜索一通发现 有个参数collapse = TRUE基本可以满足需求,效果变成了下面酱紫滴。

str1 <- "财政部 卫生健康委"
str2 <- "财政部 卫生健康委"
nchar(str1)
## [1] 9
nchar(str2)
## [1] 9
length(str1)
## [1] 1
str1 == str2
## [1] FALSE

    ps 俺不认识 collapse 这个单词,又查了下词典,居然是崩溃、垮掉的意思,从俺的视角看,这个参数实现的功能明明是合并、整合之类的,怎么词义和功能的含义刚好相反咧……又搜索一通,原来 collapse 还有折叠的含义,然而折叠和展开俺原本只认得 fold/unfold,再说这也不是折叠啊喂。也许只是折叠了空格的意思吧。

      yuanfan 这效果比你预想的要好一些吧,结果都直接附在相应的代码后面,而不是集中挤到整段代码后面弄不清谁是谁的崽。

      yuanfan 就是眼看他楼塌了,塌了就缩成一堆了。人崩溃了不也会缩成一团么,自古以来应该还没有人会全身舒展地崩溃吧。

        yihui

        如果我原本就认得这个英文单词的话,真是打死我都想不到脑回路是长这样,看来真的是每个人都有自己的小宇宙啊。不过,我以前都是直接用 rmarkdown ,昨天一通搜索没想到其实有很多参数,说不定都有许多神奇的脑回路,哈哈,等我填完手上的1234号坑,就抽空挖掘一下这些脑回路宝藏吧,趁你还记得的时候,不然时间长了变未解之谜了的说。

        话又说回来,我联想到“死心”和“塌地”,单独看和组合起来看也是一种神奇的脑回路。

        yuanfan 你看起来是合并,但其实也可以看成是把“分块”或者“向量”的结构塌,于是成为一个整体。

          fenguoerbian

          嗯,我根据你的文字做出了一番想象,终于想到了一个例子,那就是用纸牌盖房子,盖出来的房子是有空隙的,倒塌以后是塌成一堆没空隙的,因为纸牌房子倒塌后从三维塌成二维了。但是这种塌,更像是坍缩。好吧,哈哈,确实是我对塌这个词的意象理解得少了,我原本理解的塌是整体塌了变成很多碎片那种。

          yihui

          人崩溃了不也会缩成一团么,自古以来应该还没有人会全身舒展地崩溃吧。

          有的,你得到这个结论的取样范围可能狭窄了点。有些人崩溃可能就是在地板上躺成一个大字,然后麻木。有些人崩溃是释放全身力量使劲蹦跶。

          只论 collapse 这个单词的话,我刚发现下面这个设定,在 paste 函数中,开发者指定用 collapse 参数来设定分隔符,把向量中多个元素拼接成一个长字符串。

          data <- data.frame(
            id = c(1:2),
            col1 = c('春江', '海上'),
            col2 = c('潮水', '明月'),
            col3 = c('连海平', '共潮生')
          )
          
          apply(X = data[, 2:4], MARGIN = 1, FUN = paste)
          ##      [,1]     [,2]    
          ## [1,] "春江"   "海上"  
          ## [2,] "潮水"   "明月"  
          ## [3,] "连海平" "共潮生"
          apply(X = data[, 2:4], MARGIN = 1, FUN = paste, collapse = "")
          ## [1] "春江潮水连海平" "海上明月共潮生"