Предположим, x - действительное число или вектор. Я оценивается - ложь. Тогда x [i] вернет числовой (0). Я хотел бы рассматривать это как действительное число 0 или целое число 0, которые подходят для сложения.

Numeric (0), добавленный к любому действительному числу, вернет numeric (0), тогда как я хочу получить добавленное действительное число в качестве результата. Что я могу сделать, чтобы преобразовать числовое (0) значение? Заранее спасибо!

3
siegfried 7 Окт 2020 в 04:57

2 ответа

Лучший ответ

Только когда мы делаем +, это становится проблемой. Этого можно избежать, если использовать sum

sum(numeric(0), 5)
#[1] 5
sum(numeric(0), 5, 10)
#[1] 15

Или, если нам нужно использовать +, простой вариант - объединить с 0, выбрать первый элемент. Если элементом является numeric(0), он заменяется на 0, в других случаях первый элемент остается неизменным.

c(numeric(0), 0)[1]
#[1] 0

Используя небольшой пример

lst1 <- list(1, 3, numeric(0),  4, numeric(0))
out <- 0
for(i in seq_along(lst1)) {
       out <- out + c(lst1[[i]], 0)[1]
  }

out
#[1] 8
2
akrun 7 Окт 2020 в 02:11

Вы можете использовать max / min с 0, чтобы получить 0 в качестве вывода, когда на входе numeric(0).

x <- 1:10
max(x[FALSE], 0)
#[1] 0

min(x[FALSE], 0)
#[1] 0
0
Ronak Shah 7 Окт 2020 в 07:54