первый пользователь здесь! Я просто изучаю R и надеюсь, что это простой вопрос. У меня есть массив чисел, nums, и я должен был бы гарантировать, что число не будет больше одного. Я пытаюсь сделатьR: Пользовательская функция в приложении()
myfct <- function(x) {
if (x > 1.0) x = 1.0
return(x)
}
apply(nums, 1, myfct)
Но тогда я получаю эту ошибку
Error in apply(nums, 1, myfct) :
dim(X) must have a positive length
Что я делаю не так, и есть лучший способ сделать это? Благодаря!
Добро пожаловать на ТАК! 'apply' может использоваться только для матриц и массивов, и похоже, что ваш' nums' является всего лишь вектором. Посмотрите на 'sapply' и' lapply'. Во-вторых, для этого и будущих вопросов у вас будет гораздо более высокая скорость ответа (больше 0), если вы сначала прочитали о [минимальном] (http://stackoverflow.com/help/mcve) и [воспроизводимых вопросах] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – r2evans
Кажется, что 'nums' - это вектор. Таким образом, вы можете напрямую применять 'myfct' ie' myfct (nums) 'с изменениями в' myfct', например, чтобы изменить 'if' на' ifelse' – akrun
pmin (x, 1) или x [x> 1] <- 1 – Roland