我正在编写一个 R 脚本,以根据我创建的 Excel 模板编写Qualtrics调查。我通过包从 Excel模板中获取调查项目xlsx
,然后进行一些修改以创建一个.txt
按我想要的方式格式化的文件。问题是我无法将其上传到 Qualtrics,除非我在结果.txt
文件中选择所有内容,复制并粘贴到空白.txt
文件中。
本质上,这不是关于 Qualtrics 的问题,我认为无需了解有关该平台的任何信息即可考虑该问题。我相信我的问题在于 R 输出文件格式。我希望如果你继续阅读,你会明白我的意思。
以下代码块中的所有内容都应该工作。
require(xlsx)
# import survey file; get from Dropbox link above
survey <- read.xlsx("template.xlsx", "survey")
survey <- subset(survey, !is.na(survey$questiontext)) # drop if blank
choices <- read.xlsx("template.xlsx", "choices")
# create vector to hold results
output <- "[[AdvancedFormat]]"
# loop through every question
for (i in 1:nrow(survey)) {
# insert start block if one exists
bs <- ifelse(is.na(survey$blockname[i]), "",
paste0("[[Block:",
as.character(survey$blockname[i]), "]]"))
# insert end block if one exists
be <- ifelse(is.na(survey$endblock[i]), "",
as.character(survey$endblock[i]))
# insert item ID if one exists
qid <- ifelse(is.na(survey$questionid[i]), "",
paste0("[[ID:",
as.character(survey$questionid[i]), "]]"))
# subset choice sheet to selected choice
choices.sub <- subset(choices, choices$listname==survey$choicelist[i])
responses <- ""
# create vector of choices
for (ch in 1:nrow(choices.sub)) {
responses <- paste(responses, choices.sub$label[ch], sep="\r")
}
# insert page break if one exists
pb <- ifelse(is.na(survey$pagebreak[i]) | i==nrow(survey), "",
as.character(survey$pagebreak[i]))
# add to output vector
output <- paste(output,
bs,
survey$questiontype[i],
qid,
survey$questiontext[i],
survey$choicetype[i],
responses,
pb,
be,
sep="\r")
}
# write to txt file
cat(output, file = (con <- file("foo1.txt", "w", encoding = "UTF-8"))); close(con)
这是 R 生成的foo1.txt文件。Qualtrics 拒绝该文件。如果我从这个文件中选择所有内容并复制到一个新的空白.txt
文件(使用 ST3)foo2.txt,Qualtrics 很高兴。
这两个文件有什么不同?我没有改变任何东西foo2.txt
。只需复制/粘贴到一个新文件中。