R markdown:不同行上的因子水平

4

我将使用R Markdown创建学生反馈表格,基于我们从他们的评估者那里收集到的调查数据。输入是以*.csv格式导入的10个问题。以下为示例数据:

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

目前我在我的*.rmd文件中运行r levels(question)[-1],这会给我输出以下结果(其中使用", "作为分隔符):

response 1., response 2., response 3.

请注意,总会有一些NAs,因此[-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。谢谢!

是的,我也不太清楚这里具体的问题是什么。 - RTbecard
cat(paste0(question, " \n")) 可能是这样的吗? - tospig
请返回翻译后的文本:或者使用cat(paste0(levels(question), " \n"))来获取级别。 - tospig
@tospig cat(paste0(levels(question), " \n")) 生成了所需的输出,但是它将其放入了Rmarkdown控制台而不是在文档中直接打印... - CaitlinP
1个回答

3

您可以使用新行的markdown运算符" \n"将每个响应放在文档的新行上。

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

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

我曾在这里提出过类似的问题

请注意,我在评论中使用了cat,以便您可以在控制台中看到它打印出来。在Markdown文档中,呈现已经处理好了,因此您不需要cat


值得添加这个类似的问题,它可以在每个层级上添加一个项目符号。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接