【问题标题】:Output two questions from a loop in one page-r markdown在一页 - r markdown 中从循环中输出两个问题
【发布时间】:2022-01-17 14:53:13
【问题描述】:

我目前有一个看起来像的数据框

idx = c(1:6)
Prob = c("4+0.4","1.5+9","1.1+0.6","0.4+1","0.25+0.5","0.25+1.1")
D2 = data.frame(idx,Prob)

我正在尝试使用 Rmarkdown 文件创建一个小册子,循环遍历文件中的每个问题。 我当前的代码看起来像这样,我将它编织成 pdf:

{r echo=F, comment=NA, results='asis'}
    for (i in 1:nrow(D2)){
      a = D2%>% select(Prob) %>% slice(i) %>% pull
      cat("  \n") 
      cat("\\vspace{1cm}")
      cat(i,".",a)
      cat("  \n") 
      cat("\\vspace{1cm}")
      cat("\\begin{Form}
        \\TextField[width = 16cm,%
                   height = 7cm,%
                   multiline=true,%
                   value = {%
                                 Please show your work here
                            }%
                   ]{}
    \\end{Form}")
      cat("  \n") 
      cat("\\vspace{7cm}")
      cat("  \n") 
      cat("\\begin{Form}
        \\TextField[width = 16cm,%
                   height = 3cm,%
                   multiline=true,%
                   value = {%
                                 Please write your answer here
                            }%
                   ]{}
    \\end{Form}")
      cat("\\newpage  ")
    }

当前的输出看起来像这样,每一页都有一个问题。 我想在一页上有两个问题,但我不知道该怎么做。任何帮助将不胜感激。

【问题讨论】:

    标签: r for-loop r-markdown


    【解决方案1】:

    我不得不从您的代码中删除空格,但这有效。我注释掉了一些垂直空间。由于页面大小,这会自动设置每页两个。 (虽然,我确实在 R Markdown 中的块之前添加了\newpage,因此标题和所有内容都不会与表单在同一页面上。

    如果您想强制执行下一页,您可以使用末尾注释掉的if 语句将\\newpage 添加到所有其他表单。 (它通过查找模 AKA 余数来检查 i 是偶数还是奇数。)

    \newpage
    
    ```{r echo=F, comment=NA, results='asis'}
        for (i in 1:nrow(D2)){
          a = D2%>% select(Prob) %>% slice(i) %>% pull
          cat("  \n") 
          cat("\\vspace{1cm}")          # removed
          cat(i,".",a)
          cat("  \n") 
          # cat("\\vspace{1cm}")
          cat("\\begin{Form}
            \\TextField[width = 16cm,%
                       height = 6cm,%.   # I reduced here by 1, as well
                       multiline=true,%
                       value = {%
                                     Please show your work here
                                }%
                       ]{}
        \\end{Form}")
          cat("  \n") 
          # cat("\\vspace{7cm}")        # removed
          cat("  \n") 
          cat("\\begin{Form}
            \\TextField[width = 16cm,%
                       height = 3cm,%
                       multiline=true,%
                       value = {%
                                     Please write your answer here
                                }%
                       ]{}
        \\end{Form}")
         # if((i %% 2) == 0) cat("\\newpage  ")
        }
    ```
    

    【讨论】:

    • 谢谢!完美解决了我的问题!
    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 2022-01-21
    • 2020-01-30
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多