基于列表元素循环函数
Looping a functions based on elements of a list
我在尝试基于列表循环函数并创建 table 结果时遇到了一些问题。
head(Dat17_18.3[,c(1,3:5)])
Program Area I.E.ScoreStat I.I.ScoreStat I.P.ScoreStat
1 BFA - Art Education 2 2 2
2 BA - Foreign Language Education 2 2 3
3 MAT - Elementary Education 2 2 2
4 BA - Dance Education 2 3 3
5 MAT - Elementary Education 2 3 3
6 MAT - Elementary Education 2 2 3
我已经使用 split
功能创建了程序区域列表。
test1<- split(Dat17_18.3, Dat17_18.3$`Program Area`)
我写了一个函数来从 psych
包中的 alpha
函数中提取元素。
alpha_fun <- function (df,columns){
library(psych)
a1 <- alpha(df[,columns])
a2 <- alpha.ci(a1[[1]][1],nrow(df),length(columns))
vec1 <- c(nrow(x),a1[[1]][1],a2[1],a2[3],a1[[1]][3])
return(vec1)
}
我想为测试中的每个元素设置 alpha_fun
运行,以便同时为所有程序区域创建一个 table。
考虑 by
(tapply
的面向对象包装器),它类似于 split
+ lapply
,其中一个函数可以直接应用于数据的每个子集帧分组。此外,避免需要 columns 参数,该参数可以从方法内部的数据框输入中检索:
library(psych)
alpha_fun <- function (df){
sub <- df[, 3:ncol(df)] # KEEP ONLY NUMERIC COLS
a1 <- alpha(sub)
a2 <- alpha.ci(a1[[1]][1], nrow(sub), ncol(sub))
vec1 <- c(nrow(sub), a1[[1]][1], a2[1], a2[3], a1[[1]][3])
return(vec1)
}
# LIST OF VECTORS
alpha_vec_list <- by(Dat17_18.3, Dat17_18.3$`Program Area`, alpha_fun)
# MATRIX WITH Program Area AS ROW NAMES
alpha_mat <- do.call(rbind, alpha_vec_list)
我在尝试基于列表循环函数并创建 table 结果时遇到了一些问题。
head(Dat17_18.3[,c(1,3:5)])
Program Area I.E.ScoreStat I.I.ScoreStat I.P.ScoreStat
1 BFA - Art Education 2 2 2
2 BA - Foreign Language Education 2 2 3
3 MAT - Elementary Education 2 2 2
4 BA - Dance Education 2 3 3
5 MAT - Elementary Education 2 3 3
6 MAT - Elementary Education 2 2 3
我已经使用 split
功能创建了程序区域列表。
test1<- split(Dat17_18.3, Dat17_18.3$`Program Area`)
我写了一个函数来从 psych
包中的 alpha
函数中提取元素。
alpha_fun <- function (df,columns){
library(psych)
a1 <- alpha(df[,columns])
a2 <- alpha.ci(a1[[1]][1],nrow(df),length(columns))
vec1 <- c(nrow(x),a1[[1]][1],a2[1],a2[3],a1[[1]][3])
return(vec1)
}
我想为测试中的每个元素设置 alpha_fun
运行,以便同时为所有程序区域创建一个 table。
考虑 by
(tapply
的面向对象包装器),它类似于 split
+ lapply
,其中一个函数可以直接应用于数据的每个子集帧分组。此外,避免需要 columns 参数,该参数可以从方法内部的数据框输入中检索:
library(psych)
alpha_fun <- function (df){
sub <- df[, 3:ncol(df)] # KEEP ONLY NUMERIC COLS
a1 <- alpha(sub)
a2 <- alpha.ci(a1[[1]][1], nrow(sub), ncol(sub))
vec1 <- c(nrow(sub), a1[[1]][1], a2[1], a2[3], a1[[1]][3])
return(vec1)
}
# LIST OF VECTORS
alpha_vec_list <- by(Dat17_18.3, Dat17_18.3$`Program Area`, alpha_fun)
# MATRIX WITH Program Area AS ROW NAMES
alpha_mat <- do.call(rbind, alpha_vec_list)