Напишите скрипт для игнорирования объектов, которые не могут быть найдены в r - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь создать скрипт в r, чтобы заставить его игнорировать объекты, которые он не может найти.

Упрощенная версия моего скрипта выглядит следующим образом:

Trial <-sum (a, b, c, d, e) </p>

Ae - числовые векторы, генерируемые путем вычисления суммы столбца во фрейме данных.

Моя проблема заключается в том, что я хочу использовать тот же скрипт наднесколько различных условий (и имеют гораздо больше объектов, чем просто ае).Для некоторых из этих условий некоторые объекты могут отсутствовать.Следовательно, r возвращает объект ошибки d не найден.

Чтобы не создавать уникальный сценарий для каждого условия, я хотел бы заставить игнорировать пропущенные объекты.

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 22 октября 2018

Добро пожаловать на ТАК!Как уже упоминалось в комментариях, в будущем постарайтесь включить рабочий пример в свой вопрос.Предпочтительным решением вашей проблемы было бы в первую очередь избегать присвоения значений отдельным переменным.Попробуйте реструктурировать свой код так, чтобы суммы столбцов присваивались, например, списку.В приведенном ниже примере я создаю некоторые примеры данных, назначаю значения суммы столбцов для вектора и вычисляю сумму вектора, не создавая новую переменную для каждого столбца.

# Create sample data
rData <- as.data.frame(matrix(c(1:6), nrow=6, ncol=5, byrow = TRUE))
print(rData)

# Compute column sum
sumVec <- apply(rData, 2, sum)
print(sumVec)

# Compute sum of column sums
total <- sum(sumVec)
print(total)

Если вам нужно использовать отдельные переменные, прежде чем добавлять их, вы можете проверить, существует ли переменная, а если нет, создать ее и назначить NA.Затем вы можете вычислить сумму ваших переменных после исключения NA.

# Sample variables
a <- 15
b <- 20
c <- 50

# Assign NA if it doesn't exist (one variable at a time)
if(!exists("d")) { d <- NA }

# Assign NA using sapply (preferred)
sapply(c("a","b","c","d","e"), function(x) 
  if(!exists(x)) { assign(x, NA, envir=.GlobalEnv) } 
)

# Compute sum after excluding NA
altTotal <- sum(na.omit(c(a,b,c,d,e)))
print(altTotal)

Надеюсь, это приблизит вас к решению!

...