Я новичок в R, поэтому, пожалуйста, извините, если это слишком простой вопрос.
С n-back данными я пытаюсь вычислить смещение односторонних испытаний.
Я успешно импортировал набор данных из Excel в R, и все работает, кроме строки
if (df$one_back_aprime == 1) {
df$one_back_bias <- 0
}
в следующем коде:
library(readxl)
nback_mornings_data <- read_excel("NFS4and5_mornings_R.xlsx", sheet = 1) #replace with file name
df <- data.frame(nback_mornings_data)
if (df$one_back_hit_rate > df$one_back_fa_rate) {
df$one_back_aprime <- 0.5 + ((df$one_back_hit_rate - df$one_back_fa_rate) * (1 + df$one_back_hit_rate - df$one_back_fa_rate))/(4 * df$one_back_hit_rate * (1 - df$one_back_fa_rate))
} else if (df$one_back_hit_rate < df$one_back_fa_rate) {
df$one_back_aprime <- 0.5 + ((df$one_back_fa_rate - df$one_back_hit_rate) * (1 + df$one_back_fa_rate - df$one_back_hit_rate))/(4 * df$one_back_fa_rate * (1 - df$one_back_hit_rate))
}
if (df$one_back_aprime == 1) {
df$one_back_bias <- 0
} else {
df$one_back_bias <- (((1 - df$one_back_hit_rate) * (1 - df$one_back_fa_rate)) - (df$one_back_hit_rate * df$one_back_fa_rate)) / (((1 - df$one_back_hit_rate) * (1 - df$one_back_fa_rate)) + (df$one_back_hit_rate * df$one_back_fa_rate))
}
Когда я запускаю код , все работает, за исключением случая, когда one_back_aprime == 1, он печатает NaN (потому что это то, что уравнение в другое время производит). Однако я не совсем понимаю, почему это так, потому что я уже сказал, что ему должно быть присвоено значение 0. Ясно, что я делаю это неправильно.
Может ли кто-нибудь помочь помочь изменить эту часть кода так, чтобы когда one_back_aprime = 1, новый столбец one_back_bias будет показывать значение 0? Примечание. Я пробовал печатать («0»), но это тоже не работает.
Любая помощь будет высоко ценится! Я уверен, что мне чего-то очень не хватает c, но опять же, я только начинающий.