Ошибка создания вектора из самодельной функции - PullRequest
0 голосов
/ 27 июня 2019

Пытаясь сделать мою проблему воспроизводимой, у меня есть следующий вектор:

trialvector <- as.vector(c("K", "K", "m", "m", "K"))

И эта функция пытается преобразовать этот вектор в тот, который преобразует «K» в числовое значение 3 и «m» в числовое значение 6, я хочу присвоить этот вектор переменной с именем multiplier:

 Expcalc <- function(vector)  {
 multiplier <<- vector(mode = "numeric", length = length(vector))
 for (i in seq_along(vector)) {
   if (vector[i] == "K") {
     multiplier[i] <- 3
   } else if (vector[i] == "M" | i == "m") {
     multiplier[i] <- 6
   } else {
     multiplier[i] <- 0
   }
 }
}

Вместо того, чтобы получить желаемый вывод (вектор из 6 и / или 3 в зависимости от того, какой символ был в trialvector, я получаю вектор, полный нулей. И эта ошибка:

Предупреждающие сообщения: 1: В Expcalc (trialvector): НС вводятся с помощью принуждения 2: В Expcalc (триал-вектор): АН введены путем принуждения

Что я делаю не так?

1 Ответ

0 голосов
/ 27 июня 2019
trialvector <- as.vector(c("K", "K", "m", "m", "K"))

trailvector
[1] "K" "K" "m" "m" "K"
Expcalc <- function(vector)  {
  multiplier <- as.vector(x = c(), mode = "numeric")
  for (i in vector) {
    if (i == "K") {
      multiplier <- append(multiplier, 3)
    } else if (i == "M" | i == "m") {

      multiplier <- append(multiplier, 6)
    } else {

      multiplier <- append(multiplier, 0)
    }
  }
  return(multiplier)
}

trailvector <- Expcalc(trialvector)


trailvector
[1] 3 3 6 6 3

Я переключил цикл for, а затем просто добавил новые значения в новый вектор.Вывод соответствует тому, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...