как сохранить переменную из цикла for - PullRequest
0 голосов
/ 02 октября 2019

Я хочу классифицировать свои переменные и сохранить выходные данные, но «тест» равен нулю. как я могу решить проблему?

x<-sample(10)
npz<-function(x)
{
  for(x in x)
if (x < 0) {
  print("Negative number")
} else if (x > 0) {
  print("Positive number")
} else
  print("Zero")
}
test<-npz(x)
test

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

sign вернет -1, 0 и 1 для отрицательных чисел, нуля и положительных чисел соответственно. Мы можем использовать его для индексации символьного вектора соответственно.

npz <- function(x) {
   c("Negative number", "Zero", "Positive Number")[sign(x) + 2]
}

test <- npz(c(-1, 2, 3, 0))
test
#[1] "Negative number" "Positive Number" "Positive Number" "Zero" 
0 голосов
/ 02 октября 2019

Для этого вам не нужна функция, просто вставьте все с помощью ifelse, который уже векторизован:

x <- sample(10)
test <- ifelse(x < 0, "Negative number",
            ifelse(x > 0, "Positive number", "Zero"))
...