Я пытаюсь написать функцию, которая заменит значение в векторе тем же значением, разделенным на два.Замена отрицательного значения в df для одного и того же значения, деленного на два
# replacement function for a vector
rep <- function(x)
x.half <- {abs(replace(x, which(x<0),x/2))}
Но, я знаю, что эта функция не работает должным образом, потому что если я моделировать вектор с отрицательными и положительными числами я получаю неправильный результат:
a <- c(1,-1,2,-2,3,-3,4,-4,5,-5,11,-11,12,-12,13,-13,21,-21,25,-25)
a.rep <- rep(a)
# data frame to test
test <- cbind(a,a.rep)
Кроме того, когда я применяю эту функцию вектор а, я получаю предупреждение, как это:
Предупреждение сообщение: в заменить (х, что (х < 0), х/2): количество элементов, чтобы заменить это не кратна замещающей длине
Очевидно, что что-то не так с моей функцией.
Это очень короткая версия моей функции, что хорошо. Но мне нужно уменьшить вдвое отрицательные значения, все положительные значения не должны быть изменены. – marianess
'a [which (a <1)] = a [which (a <1)]/2' Это будет работать, нет необходимости писать функцию для этого. –
Только что понял, что это лучший и самый короткий ответ: D Спасибо @ChirayuChamoli – marianess