作者lichungtsai (海滩拖鞋)
看板R_Language
标题[问题] 跑回圈时如何略过不存在资料继续跑
时间Wed Feb 15 17:59:45 2017
问题类型:程式谘询
学龄:这个寒假开始(约一个月)
code:
### Step 0 ###
#0.0 remove all previous data
rm(list = ls())
#0.1 set home directory
setwd("path")
#0.2 check home directory
getwd()
#0.3 load packages
### Step 1 ###
#1.0 set empty matrix
results <- matrix(NA, 69, 31)
#1.1 name rows
rownames(results) <- c(paste("subj",rep(0:22, times = 1, each = 3),"_secc",rep(1:3,23),sep = ""))
#1.2 name columes
colnames(results) <- c(paste("ResProbI1", 1:8, sep = ""),paste("ACC", 1:4, sep = ""),"ACC1&8","ACC2&7","ACC3&6","ACC4&5",paste("RT", 1:8,sep = ""),"RT1&8","RT2&7","RT3&6","RT4&5","RTall","slope","threshold")
### Step 2 ###
#2.0 loop for subject number
for(sn in 0:22) for(s in 1) #sn for "subject number", s for "seccsion"
{
#2.1 import csv data
#2.1.1 name csv "dn"
dn <- paste("result_", sn,"-sess",s,".csv",sep = "")
#2.1.2 load the csv to a list
dt <- sapply(dn, read.csv)
#2.1.3 convert list to a data frame
dt <- data.frame(Reduce(cbind, dt))
#2.1.4cut unnecessary c
dt <- dt[,1:14]
#2.1.5 name rows
#2.1.6 name colnames
colnames(dt) <- c("subj", "Session", "Run", "Trial", "Respond", "Respond.time", "Confidence.rating", "Is.correct", "Fixation.time", "Interval1.contrast", "Interval2.contrast", "Target.interval", "Target.contrast", "Target.position")
#2.2 response probability of I1 (situation 1 to 4) -> col 1 to 4
for(i in 1:4)
{
results[3*sn+s,5-i] <- 1-mean(dt[dt$Target.interval == 2 & dt$Target.contrast == i,]$Is.correct)
#2.3 response probability of I1 (situation 5 to 8) -> col 5 to 8
results[3*sn+s,4+i] <- mean(dt[dt$Target.interval == 1 & dt$Target.contrast == i,]$Is.correct)
#2.4 ACC of situation 1 to 4 -> col 9 to 12
results[3*sn+s,8+i] <- mean(dt[dt$Target.interval == 2 & dt$Target.contrast == i,]$Is.correct)
#2.5 ACC of situation 1&8, 2&7, 3&6, 4&5 -> col 13 to 16
results[3*sn+s,17-i] <- mean(dt[dt$Target.contrast == i,]$Is.correct)
#2.6 RT (situation 1 to 4) -> col 17 to 20
results[3*sn+s,21-i] <- mean(dt[dt$Target.interval == 2 & dt$Target.contrast == i & dt$Is.correct == 1,]$Respond.time)
#2.7 RT (situation 5 to 8) -> col 21 to 24
results[3*sn+s,20+i] <- mean(dt[dt$Target.interval == 1 & dt$Target.contrast == i & dt$Is.correct == 1,]$Respond.time)
#2.8 RT (situation 1&8, 2&7, 3&6, 4&5) -> col 25 to 28
results[3*sn+s,29-i] <- mean(dt[dt$Target.contrast == i & dt$Is.correct == 1,]$Respond.time)
#2.9 RT (all) -> col 29
results[3*sn+s, 29] <- mean(dt[dt$Is.correct == 1,]$Respond.time)
}
}
===
这是我写的简单code
就是实验室的23个受试者(sn 0:22),理论上应该各做了三次实验(s 1:3)
每次实验都有产生一个csv档
所以我想产生一个表格列出他们的描述统计
不过不是每个人都有做满3次
所以在跑回圈的时候
他说因为读取不到後续的就不继续跑了
上网稍微查一下好像可以使用if函数
不过研究不太出来所以想求救一下该怎麽做?
--
Sent from my Windows
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.47.187.116
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1487152788.A.A89.html
1F:→ cywhale: for(s in 1:3) {if(!file.exists(paste0("xx",s,".csv")) 02/15 19:39
2F:→ cywhale: {break}}跳出s回圈 如果是要继续回圈用next 02/15 19:40
3F:→ Paravion: tryCatch可以跳过警告讯息 02/18 00:04