我几乎是R语言的初学者,所以如果我听起来很蠢,请原谅我。这是我的情况:
我模拟了960种不同的回答模式,进行了10个项目的测试。它们以.txt格式成对存储在我的目录中,因此有480对文本文件。它们的名称如下:x_a_b_c_d或y_a_b_c_d其中a,b,c和d是数字。 a在1到3之间,b和c在1到4之间,d在1到10之间。我需要从目录中调用每一对,将它们转换为频率表并将它们等同。我可以一一完成:
首先,我从目录中调用一对,并使用freqtab()
函数将它们转换为频率表(因为equate()
仅适用于它们)。
path1<-"directory//x_1_1_1_1.txt"
x1<-(read.table(path1, header=TRUE))
ftx1<-freqtab(x1, items = list(1:10, 9:10), scales = list(0:10, 0:2))
path2<-"directory//y_1_1_1_1.txt"
y1<-(read.table(path2, header=TRUE))
fty1<-freqtab(y1, items = list(1:10, 9:10), scales = list(0:10, 0:2))
然后我将它们等同为:
eq1<- equate(ftx1, fty1, type="linear", method="levine", ws=1)$conc$yx
但是,我需要对所有一对一对一地做。 因此,有什么方法可以成对调用.txt文件,并将它们等同于一个函数?
答案 0 :(得分:0)
我不认识equate
,所以我将从通用的数据处理角度回答。
xfiles <- list.files(path = "some_directory", pattern = "^x.*", full.names = TRUE)
yfiles <- gsub("^x", "y", xfiles)
bothexist <- file.exists(xfiles) & file.exists(yfiles)
xdata <- lapply(xfiles[bothexist], function(fn) {
freqtab(read.table(fn, header = TRUE), items = list(1:10, 9:10), scales = list(0:10, 0:2))
})
ydata <- lapply(yfiles[bothexist], function(fn) {
freqtab(read.table(fn, header = TRUE), items = list(1:10, 9:10), scales = list(0:10, 0:2))
})
eq <- Map(function(x,y) equate(x, y, type="linear", method="levine", ws=1)$conc$yx,
xdata, ydata)