R降价:不同行的因子水平

时间:2016-02-17 01:08:11

标签: r r-markdown

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

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

目前我在我的r levels(question)[-1]文件中运行*.rmd,该文件为我提供了此输出(使用&#34;,&#34;作为分隔符):

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的最直接的方法。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

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

我有similar question to this here

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