respuesta de flodel trabajó para mi aplicación, así que voy a posterior w que construí sobre él, aunque esto no está muy inspirado. Puede acceder a cada elemento de la lista con un bucle for
, así:
#============== 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.
estoy usando código como este para una función que llama a ciertos conjuntos de columnas de una trama de datos con los nombres de las columnas. El usuario ingresa una lista con elementos que representan diferentes conjuntos de nombres de columna (cada conjunto es un grupo de elementos que pertenecen a una medida) y el marco de datos grandes que contiene todas esas columnas. El bucle for
aplica cada elemento de lista consecutiva como el conjunto de nombres de columna para una función interna * aplicada solo al conjunto de columnas del big data frame actualmente nombrado. A continuación, rellena una columna por ciclo de una matriz con la salida para el subconjunto de la trama de datos grandes que corresponde a los nombres en el elemento de la lista correspondiente al número de ese bucle. Después del bucle for
, la función finaliza al generar la matriz que produjo.
No estoy seguro si está buscando hacer algo similar con los elementos de su lista, pero estoy contento de haber tomado este truco. Gracias a todos por las ideas!
"Segundo ejemplo" info/tangencial respecto a la aplicación del factor de modelo de respuesta gradual anotando:
Aquí es la función que he descrito anteriormente, por si acaso alguien quiere calcular puntuaciones de los factores modelo respuesta gradual * en gran lotes ... Cada columna de la matriz de salida corresponde a un elemento de la lista (es decir, un rasgo latente con elementos del indicador ordinal especificado por nombre de columna en el elemento de lista), y las filas corresponden a las filas del marco de datos utilizado como entrada. Cada fila debería contener supuestamente observaciones mutuamente dependientes, como de un individuo dado, a quien pertenecen las puntuaciones de los factores en la misma fila de la matriz de salida.Además, creo que debo agregar que si todos los elementos de un elemento de lista determinado utilizan exactamente las mismas opciones de calificación de escala Likert, el modelo de respuesta gradual puede ser menos apropiado para la calificación de factores que un modelo de escala de calificación (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}
referencia
* Rizopoulos, D. (2006). ltm: Un paquete R para análisis de la teoría de respuesta de elementos y modelos de variables latentes, Journal of Statistical Software, 17 (5), 1-25. URL: http://www.jstatsoft.org/v17/i05/
La razón por la que se obtiene un error es que 'example.list $ attribute' no es un objeto, sino que es el resultado de aplicar el operador (' $ ', aka Extract, try -'? '" Backtick " '$' "backtick) al par' (ejemplo.lista, atributo) '. – Ryogi