Для начала, я довольно новичок в программировании на R (или программировании в целом) - так что, возможно, я допустил несколько довольно простых ошибок. Мне нужна эта функция, чтобы генерировать обратную связь для участников моего эксперимента - перед основной процедурой они заполнят анкету HEXACO. Я создал функцию для расчета и внедрения STEN в фрейм данных. Теперь я хочу, чтобы функция генерировала результат для баллов каждого человека, принимая ID и значение STEN для каждой черты из строки во фрейме данных.
PRINT.HEXACO <- function(data) {
for(row in 1:nrow(data)) {
## read values from "data" of every trait STEN and person ID.
id <- data[row, "id"]
HH_sten <- data[row, "HH_sten"]
EM_sten <- data[row, "EM_sten"]
EX_sten <- data[row, "EX_sten"]
AG_sten <- data[row, "AG_sten"]
CS_sten <- data[row, "CS_sten"]
OP_sten <- data[row, "OP_sten"]
## Create STEN dataframe needed for plot *
STEN_df <- data.frame(names = c("H-H", "EM", "EX", "AG", "CS", "OP"),
values = c(HH_sten, EM_sten, EX_sten, AG_sten, CS_sten, OP_sten))
## Make it a .gather object needed for plot *
STEN_df.gather <- gather(STEN_df, key = "Scale", val = "Val")
## Create a plot! *
STEN_plot <- ggplot(STEN_df.gather, aes(x = Scale, y = Val)) +
theme_minimal() +
scale_x_discrete(labels = c("H-H", "EM", "EX", "AG", "CS", "OP"), name="Personality traits") +
scale_y_continuous(name=NULL, limits = c(0,10), breaks = (0:10))
## Taking template.doc for styles
HEXACO_report <- read_docx("template.doc") %>%
body_add_par(value = "HEXACO personality profile", style = "Title") %>%
body_add_par(value=" ") %>%
## Printing ID of person
body_add_par(value = paste("Person's ID:",id,sep = " ")) %>%
## generating a ggplot of HEXACO profile!
body_add_gg(value = STEN_plot, style = "centered") %>%
body_add_par(value=" ") %>%
##Information about person's STEN in first scale, and if it's low/high
body_add_par(value = paste("Honesty - Humility: STEN", HH_sten, "-", sep = " "), style = "Heading 1")%>%
if(HH_sten <= 2) {
slip_in_text(value = "very low", style = "Heading 1")
} else if(HH_sten <= 4) {
slip_in_text(value = "low", style = "Heading 1")
} else if(HH_sten <= 6) {
slip_in_text(value = "middle", style = "Heading 1")
} else if(HH_sten <= 8) {
slip_in_text(value = "high", style = "Heading 1")
} else {
slip_in_text(value = "very high", style = "Heading 1")}%>%
body_add_par(value=" ") %>%
##description for Honesty - Humility
body_add_par(value="Description for high values of HH", style = "No Spacing") %>%
body_add_par(value=" ") %>%
body_add_par(value="Description for low values of HH", style = "No Spacing") %>%
## In there goes the same code for all other scales of the questionnaire
## And finally creating the report
print(target = paste0("/raporty/Raport_",id,".doc"))
}
}
После запуска функции в тестовом фрейме данных Я получил странное сообщение об ошибке:
Ошибка в zip :: unzip (zipfile = newfile, exdir = folder): ошибка zip: Cannot open zip file
C: \ Users \ Michał \ AppData \ Local \ Temp \ RtmpainnhZ \ file1bcc2b7bcd6.do c>for reading
в файле zip.c:238
Кроме того: Предупреждение:
Ошибка в zip :: unzip (zipfile = newfile, exdir = folder): ошибка zip: Cannot open zip file
C: \ Users \ Michał \ AppData \ Local \ Temp \ RtmpainnhZ \ file1bcc2b7bcd6.do c>for reading
в файле zip.c:238
Я думаю, что функция распаковки используется при создании .do c пакетом офицера. Но я не знаю, что может быть причиной ошибки, поскольку я никогда раньше не использовал функцию zip :: unzip, и я думаю, что моих текущих знаний в R может быть недостаточно для этой проблемы. Может быть, у кого-то была подобная проблема раньше, или просто наизусть знаете решение этой проблемы? Я прошу помощи.
Вот глава моего тестового фрейма данных:
TestDataSO <- data.frame(id = c(1:6),
HH_sten = c(6,4,8,6,3,2),
EM_sten = c(8,8,4,3,2,6),
EX_sten = c(3,9,7,8,4,4),
AG_sten = c(3,5,5,3,7,7),
CS_sten = c(7,4,10,8,3,2),
OP_sten = c(5,7,4,5,4,8))