【发布时间】:2020-08-06 21:05:20
【问题描述】:
我检查了其他问题并没有真正找到解决方案。
我正在尝试根据一组条件更新我的数据框中的向量,如下所示:
EEG3$CorrectFinal <-as.character(EEG3$CorrectFinal)
subjectlist1 = c("s002","s004","s010","s011","s012","s017","s018","s019","s020","s025","s026","s028")
for (i in subjectlist1) {
EEG3$CorrectFinal <- ifelse (EEG3$subject == subjectlist1[i] & EEG3$trial <326 & EEG3$Deviant == 101 & EEG3$Correct == 222|EEG$subject == subjectlist1[i] & EEG3$trial <326 & EEG3$Deviant == 102 & EEG3$Correct == 155|EEG3$subject == subjectlist1[i] & EEG3$trial >326 & EEG3$Deviant == 101 & EEG3$Correct == 155|EEG$subject == subjectlist1[i] & EEG3$trial >326 & EEG3$Deviant == 102 & EEG3$Correct == 222, yes = 1, no = EEG3$CorrectFinal)}
然后我收到以下错误消息:
Error in `$<-.data.frame`(`*tmp*`, "CorrectFinal", value = logical(0)) : replacement has 0 rows, data has 20
所以我在数据框中创建了一个零向量(列),并将条件分配给任一,如果为真,则填充 1,如果不是,则保持相同的值(即 0)。我只是不明白为什么我会收到此错误消息,或者此脚本在哪里中断。
这里有一些用示例数据框重现问题的代码:
EEG3 <-read.table(header = TRUE, text =" subject trial Deviant Correct CorrectFinal
1 s002 1 101 102 0
2 s002 2 102 101 0
3 s002 3 101 155 0
4 s002 4 101 155 0
5 s002 5 101 155 0
6 s002 6 101 155 0
7 s002 7 102 222 0
8 s002 8 101 155 0
9 s002 9 101 155 0
10 s002 10 102 222 0
11 s002 11 101 222 1
12 s002 12 101 222 1
13 s002 13 101 222 1
14 s002 14 101 222 1
15 s002 15 102 155 1
16 s002 16 101 222 1
17 s002 17 101 155 0
18 s002 18 101 222 1
19 s002 19 102 155 1
20 s002 20 101 222 1")
> ```
【问题讨论】:
-
mydata应该是EEG3吗? -
顺便说一句,您是否忽略了
trial或326?您的逻辑确保它永远不会匹配。
标签: r dataframe for-loop if-statement