[問題] 跑迴圈時如何略過不存在資料繼續跑
問題類型:程式諮詢
學齡:這個寒假開始(約一個月)
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://www.ptt.cc/bbs/R_Language/M.1487152788.A.A89.html
→
02/15 19:39, , 1F
02/15 19:39, 1F
→
02/15 19:40, , 2F
02/15 19:40, 2F
→
02/18 00:04, , 3F
02/18 00:04, 3F
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章