Отбрасывая комментарии @ qdread, у вас есть несколько проблем:
if (a=1) ...
не удается, потому что вы присваиваете , когда вы должны проверять равенство.Вместо этого используйте if (a==1) ...
.
if
требует, чтобы его условное выражение было точно длиной 1, но это будет иметь место только в том случае, если ваш кадр имеет 1 строку;0 или больше 2 выдаст вам предупреждение: "условие имеет длину> 1, и будет использоваться только первый элемент" .Вместо этого используйте ifelse(condition, then, else)
.
Ваше переназначение должно, вероятно, войти в столбец кадра.Ваш fixed_data
является вектором (что хорошо), но впоследствии его нет в кадре.В действительности, ifelse
, рекомендованный в # 2 выше, не знает и не заботится о фреймах, он просто работает с векторами, поэтому аргументы "conditional", "then" (если true) и "else" (если false)все должны быть векторами одинаковой длины (или длиной 1, переработанными).
Ваш код должен выглядеть примерно так (не проверено):
data <- read.csv(file.choose(), head = TRUE)
newcred <- ifelse(data$journalItemLine_account == "3605",
data$journalItemLine_debitAmount, data$journalItemLine_creditAmount)
newdebt <- ifelse(data$journalItemLine_account == "3605",
data$journalItemLine_creditAmount, data$journalItemLine_debitAmount)
data$journalItemLine_creditAmount <- newcred
data$journalItemLine_debitAmount <- newdebt
(Опять же, не проверено! , пожалуйста, проверьте изменения, прежде чем использовать это для всех данных.)