代码贴在这:
library("reshape")
library("readr")
data1<-read.table("expb.txt","\t",header= T)
inteval<-100;totaltime<-5000 #设定总观察时间和时间分段
subid<-unique(data1$sub)
data2<-subset(data1,start<totaltime)
for (i in 1:length(subid)) {
datatmp<-subset(data2,sub==subid[1])
for(l in 1:length(datatmp[,1])){
if(datatmp[l,"end"]>=totaltime)
datatmp[l,"end"]<-totaltime-1
}
dataYN<-data.frame(Subject=NA,Item=NA,Condition=NA,Fixseq=NA,area1=NA,area2=NA,area3=NA,area4=NA,area5=NA)
for(t in 1:48){
datatmptmp<-subset(datatmp,trialid==t)
dataY<-data.frame(subject=NA,item=NA,condition=NA,fixseq=NA,area1=NA,area2=NA,area3=NA,area4=NA,area5=NA)
for(m in 1:max(datatmptmp[,"end"]))
{dataY[m,c(1,2,3,4)]<-c(datatmptmp[1,c("sub","trialid","cond")],as.integer(m/inteval)+1)}
for(k in 1:length(datatmptmp[,1]))
{
for(n in datatmptmp[k,"start"]:datatmptmp[k,"end"])
{dataY[n,4+datatmptmp[k,"stimuli"]]<-as.integer(n>=datatmptmp[k,"start"]&&n<=datatmptmp[k,"end"])}
}
dataY <- aggregate(dataY, by=list(Subject = dataY$subject,Item =dataY$item,Condition = dataY$condition,Fixseq = dataY$fixseq), FUN=sum,na.rm=TRUE)
dataY$item <- dataY$condition <- dataY$subject<-dataY$fixseq<- NULL
dataYN<-rbind(dataYN,dataY)
}
dataYN<-subset(dataYN,!is.na(Subject))
dataYNtmp<-dataYN[,c(5:8)];
dataYNtmp<-log((dataYNtmp+0.5)/(inteval-dataYNtmp+0.5));
#dataYN$datalgd<-dataYNtmp[,2]-dataYNtmp[,4];
dataYN[,c(9:12)]<-dataYNtmp;
write_csv(dataYN,"datalin.csv",append= T)
}
出现报错:Error in sub == subid[1] : 只能比较(1)基元或串列种类