Преобразование нескольких двойных переменных в R в целое число - PullRequest
0 голосов
/ 07 мая 2020

Если у меня есть несколько удвоений, все они хранятся как переменные:

float_1 = 5.0
float_2 = 3.1
...
float_5 = 3.1

Как я могу обновить все переменные, чтобы они стали numeri c, без повторной записи as.integer (). Я думал примерно так:

vapply(c(float_1,float_2,float_3,float_4,float_5, as.integer()))

Но это не работает, поскольку R говорит мне as.integer()' is not a function, character or symbol. Вдобавок, даже если это сработает, это просто вернет вектор из 5 двойников, вместо обновления каждой переменной.

Edit: Чтобы уточнить, мне, очевидно, все равно, станет ли 3.1 3. Но мне нужно, чтобы каждый тип переменной стал числовым c, поскольку я направляю эти переменные в сетчатую функцию, которая требует целых чисел.

1 Ответ

4 голосов
/ 07 мая 2020

Комментарии идут с вполне подходящими ответами. Однако часто рекомендуется хранить подобные переменные в векторе или списке, что упростит подобные операции. Основываясь на комментариях от @ r2evans, одним из методов будет

#Unlist to store as vector, remove to store as list
vars <- unlist(mget(var_name <- ls(pattern = '^float_([0-9]*)')))
vars <- as.integer(vars) #lapply(vars, as.integer) #<= list  version
#names get lost in "translation", so we'll have to add the names again
names(vars) <- var_name 
#rename if wanted
names(vars) <- gsub('^float', 'integer', names(vars))
vars
#output
# integer_1 integer_11  integer_2  integer_3 
#         5         11          3          4 

, после чего мы можем извлечь интересующую переменную специфицированной c как vars['integer_1'].

data

float_1 = 5.0
float_2 = 3.1
float_3 <- 4.2
float_11 <- 11.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...