Я пытаюсь написать функцию, которая принимает атрибуты столбцов и преобразует их в соответствующие строки.
Мои данные имеют метки переменных (описание столбца), имена переменных, тип (коэффициент, цифра, символ) и определенные уровни фактора (например, 1 = да, 2 = нет).Я хотел бы использовать функцию, которая генерирует строку, которая содержит всю информацию в соответствующем порядке:
Q B
Q [varname] vallab
T S #type
R yes
R no
Q E
Я написал функцию так:
WriteQ<-function(VarLab,VarName,Responses,VarType) {
cond<-sapply(VarType, switch,
factor="T S\n",
numeric="T I\n",
character="T C\n")
mystr<-paste0("Q B\nQ [",VarName,"] ", VarLab, "\n",cond,"L0L2\n",paste("R",Responses, collapse = "\n"),"\nQ E")
return(mystr)
}
И пытаюсь вызвать это как:
attributes(data)$qps<-WriteQ(attributes(data)$variable.labels,
attributes(data)$names,
unlist(lapply(data, attr, "levels")),
unlist(lapply(data, class)))
Хотя VarLab, VarName и VarType работают нормально, у меня проблема с ответами.Он печатает все уровни формы всего кадра данных в каждом разделе.Как мне передать список уровней отдельно для каждого столбца?
Структура файла:
structure(list(id = c(1, 2), q23 = structure(1:2, .Label = c("yes",
"no", "don't know"), class = "factor"), gender = structure(c(1L,
1L), .Label = c("male", "female"), class = "factor"), age = c(33,
44)), row.names = 1:2, variable.labels = c("id", "Do you like flowers?",
"Select gender...", "How old are you?"), class = "data.frame")