R markdown:不同行的因素水平

R markdown: levels of factor on different lines

我正在使用 R markdown 根据我们从评估员那里收集的调查数据来创建学生反馈表。输入有 10 个以 *.csv 格式导入的问题。示例数据:

question <- as.factor(c(NA, NA, "response 1.", "response 2.", NA, "response 3."))

目前我的 运行 r levels(question)[-1] 在我的 *.rmd 文件中,它给了我这个输出(以“,”作为分隔符):

response 1., response 2., response 3.

请注意,总会有一些 NA,因此 [-1] 只是删除因子的 NA 水平。

我想要的是在新行上创建每个响应的输出:

response 1. 

response 2.

response 3. 

我可以通过在每个级别上指定级别来在单个表单上执行此操作,即

r levels(question)[2]

r levels(question)[3]

r levels(question)[4]

然而,对于每个问题,都有可变数量的非 NA 响应(1 到 4),所以我需要一个不需要明确知道会有多少的解决方案。即相同的代码将为 q1 和 q2 提供所需的格式:

q1 <- as.factor(c(NA, NA, "response 1.", NA, NA, "response 2.")

q2 <- as.factor(c(NA, NA, "response 1.", "response 2.", "response 3.", "response 4.")

通常我会用 for 循环来解决这个问题,但 Markdown 读取代码的方式与 R 控制台不同。已尝试 as.character 而不是 as.factor 但似乎没有帮助;调用 levels(question[-1]) 似乎是删除 NA 最直接的方法。

谢谢!

您可以使用换行降价运算符 " \n" 将每个回复放在文档中的新行上。

```{r}
question <- as.factor(c(NA, NA, "response 1", "response 2", NA, "response 3"))
```

`r paste0(levels(question), "  \n", collapse="")`

我有一个

请注意,我在评论中使用了 cat,因此您可以在控制台中看到它的打印。在 markdown 文档中,渲染得到处理,因此您不需要 cat