ответ flodel работал для моего приложения, поэтому я опубликую то, что я на нем построил, хотя это довольно скучно.Вы можете получить доступ к каждому элементу списка с помощью цикла for
, например:
#============== List with five elements of non-uniform length ================#
example.list=
list(letters[1:5], letters[6:10], letters[11:15], letters[16:20], letters[21:26])
#===============================================================================#
#====== for loop that names and concatenates each consecutive element ========#
derp=c(); for(i in 1:length(example.list))
{derp=append(derp,eval(parse(text=example.list[i])))}
derp #Not a particularly useful application here, but it proves the point.
Я использую подобный код для функции, которая вызывает определенные наборы столбцов из фрейма данных по именам столбцов.Пользователь вводит список с элементами, каждый из которых представляет разные наборы имен столбцов (каждый набор представляет собой группу элементов, принадлежащих одному показателю), и большой фрейм данных, содержащий все эти столбцы.Цикл for
применяет каждый последовательный элемент списка в качестве набора имен столбцов для внутренней функции *, применяемой только к текущему именованному набору столбцов большого фрейма данных.Затем он заполняет один столбец в цикле матрицы выводом для подмножества большого фрейма данных, который соответствует именам в элементе списка, соответствующем номеру этого цикла.После цикла for
функция завершается выводом той матрицы, которую она произвела.
Не уверен, что вы хотите сделать что-то похожее с элементами списка, но я рад, что подхватил этот трюк.Спасибо всем за идеи!
«Второй пример» / тангенциальная информация относительно применения в скоринговой модели фактор-скоринга :
Вот функция, которую я описал выше, просто весли кто-то хочет рассчитать баллы коэффициента модели градуированного ответа * большими партиями ... Каждый столбец выходной матрицы соответствует элементу списка (т. е. скрытой характеристике с порядковыми элементами индикатора, указанными в имени столбцав элемент списка), а строки соответствуют строкам фрейма данных, использованным в качестве входных данных.Предполагается, что каждая строка должна содержать взаимозависимые наблюдения от конкретного человека, которому принадлежат оценки факторов в той же строке матрицы выходных данных.Кроме того, я чувствую, что должен добавить, что если все элементы в данном элементе списка используют одинаковые параметры оценки по шкале Лайкерта, модель дифференцированного ответа может быть менее подходящей для оценки факторов, чем модель по шкале оценки (см. http://www.rasch.org/rmt/rmt143k.htm).
'grmscores'=function(ColumnNameList,DataFrame) {require(ltm) #(Rizopoulos,2006)
x = matrix ( NA , nrow = nrow ( DataFrame ), ncol = length ( ColumnNameList ))
for(i in 1:length(ColumnNameList)) #flodel's magic featured below!#
{x[,i]=factor.scores(grm(DataFrame[, eval(parse(text= ColumnNameList[i]))]),
resp.patterns=DataFrame[,eval(parse(text= ColumnNameList[i]))])$score.dat$z1}; x}
Ссылка
* Rizopoulos, D. (2006). Ltm: пакет R для моделирования скрытой переменной и анализа теории отклика элемента, Журнал статистического программного обеспечения, 17 (5), 1-25. URL: http://www.jstatsoft.org/v17/i05/