我使用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
的最直接的方法。
谢谢!
答案 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