我将使用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
。谢谢!
cat(paste0(question, " \n"))
可能是这样的吗? - tospigcat(paste0(levels(question), " \n"))
来获取级别。 - tospigcat(paste0(levels(question), " \n"))
生成了所需的输出,但是它将其放入了Rmarkdown控制台而不是在文档中直接打印... - CaitlinP