Größe: 4279
Kommentar:
|
Größe: 4388
Kommentar:
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 76: | Zeile 76: |
* gives the function its name including arguments and their default values | * [[#CA-a8692f97d06bd15e4a572260cf8b72ef3c9d984e_1|line 1]] gives the function its name including arguments and their default values |
Zeile 90: | Zeile 90: |
* this line just prints out the name of the file while reading it unless verbose is set to wrong | * [[#CA-a8692f97d06bd15e4a572260cf8b72ef3c9d984e_2|this line]] just prints out the name of the file while reading it unless verbose is set to wrong |
Final Functions
Funtion: Reading File
Here is the function as whole, below we go through it line by line.
1 read.file <- function(file,skip,verbose=T){
2 if(verbose) print(paste("read", file))
3 tmp <- read.table(file,skip = skip,sep = "\t",
4 header=T,na.strings = c(" +",""),
5 fill=T)
6
7 tmp <- tmp[!is.na(tmp$Subject),]
8
9 if(sum(str_detect(tmp[,1],"CH|GA|IJ|Kj|RMK"))) print(paste("id",tmp[3,1]))
10
11 if(sum(tmp$Stim.Type %in% c("hit","incorrect"))==0) return(NULL)
12
13 tmp <- lapply(tmp,function(x) {
14 if( class(x) %in% c("character","factor") ){
15 x <- factor(gsub(" ","",as.character(x)))
16 return(x)}else{ return(x) }})
17
18 tmp <- as.data.frame(tmp)
19
20 pause <- which(tmp$Event.Type=="Picture" & tmp$Code=="Pause")
21 if(length(pause)>0){
22 drei <- which(tmp$Code==3 & !is.na(tmp$Code))
23 drei <- drei[drei > pause][1:2]
24 if(pause + 1 < drei[1]){
25 tmp <- tmp[-(pause:drei[2]),]
26 }}
27
28
29 tmp <- tmp[!(tmp$Event.Type %in% c("Pause","Resume")), ]
30
31 first.pic <- min(which(tmp$Event.Type=="Picture" & !is.na(tmp$Event.Type) )) - 1
32 tmp <- tmp[-(1:first.pic),]
33
34 last.pic <- min(which(tmp$Event.Type=="Picture" & !is.na(tmp$Event.Type) &
35 tmp$Code=="Fertig!" & !is.na(tmp$Code)))
36 tmp <- tmp[-(last.pic:nrow(tmp)),]
37
38 zeilen <- which(tmp$Event.Type %in% c("Response"))
39 zeilen <- sort(unique(c(zeilen,zeilen-1)))
40 zeilen <- zeilen[zeilen>0]
41 tmp <- tmp[zeilen,]
42
43 responses <- which(tmp$Code %in% c(1,2))
44 events <- responses-1
45 tmp$Type <- NA
46 tmp$Type[responses] <- as.character(tmp$Event.Type[events])
47
48 if(length(tmp$Type[responses])!=length(tmp$Event.Type[events])) { print(file)}
49 tmp$Event.Code <- NA
50 tmp$Event.Code[responses] <- as.character(tmp$Code[events])
51 tmp$Time1 <- NA
52 tmp$Time1[responses] <- tmp$Time[events]
53 tmp$Stim.Type[responses] <- as.character(tmp$Stim.Type[events])
54 tmp$Duration[responses] <- as.character(tmp$Duration[events])
55 tmp$Uncertainty.1[responses] <- as.character(tmp$Uncertainty.1[events])
56 tmp$ReqTime[responses] <- as.character(tmp$ReqTime[events])
57 tmp$ReqDur[responses] <- as.character(tmp$ReqDur[events])
58 tmp$Pair.Index[responses] <- as.character(tmp$Pair.Index[events])
59
60
61 tmp$Stim.Type[responses] <- as.character(tmp$Stim.Type[events])
62 tmp <- tmp[tmp$Event.Type=="Response" & !is.na(tmp$Type),]
63 tmp <- tmp[tmp$Type=="Picture" & !is.na(tmp$Type),]
64 return(tmp)
65 }
line 1
line 1 gives the function its name including arguments and their default values
- the file argument will take the file name and is without a default
- skip takes a number which indicates how many lines will be skipped at the beginning of the file
- verbose indicates if the file name will be printed out while reading
1 read.file <- function(file,skip=3,verbose=T){
line 2
1 if(verbose) print(paste("read", file))
this line just prints out the name of the file while reading it unless verbose is set to wrong
Line 3-5
here we have the command to read in the text file
- it takes the skip argument from above
- we are setting sep which indicates the field separator to tab
- set header to T because the file contains the columns names
- with setting na.strings to the empty string or any string containing only spaces to we indicate to code this fields as missings