Я еще не нашел эту точную проблему здесь. У меня есть много столбцов, и для всех тех, которые соответствуют ЛЮБОМУ из списка строк, я хочу преобразовать из фактора -> символ -> числовой.
Ниже показан пример, в котором столбцы, содержащие одну из строк, преобразуются, и две вещи, которые я пробовал для случая нескольких строк, которые потерпели неудачу
#Making fake data where every column is a factor. At the end I'd like to convert all factors that contain either "alcium" or "zinc" in the column name.
library(reshape2)
fake <-data.frame(id=c(1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3),
time=c(rep("Time1",9), rep("Time2",9)),
test=c("calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc"),
score=floor(runif(18, min=1, max=5)))
fake <- dcast(fake, id ~ time + test)
fake <- fake %>% mutate_if(is.numeric,as.factor)
#This works, but only for columns containing one of the strings
fake <- fake %>% mutate_at(vars(contains('alcium')), function(x) as.numeric(as.character(x)))
#Now trying to convert all columns containing either "alcium" or "zinc"
fake <- fake %>% mutate_at(vars(contains('alcium'| 'zinc')), function(x) as.numeric(as.character(x)))
#gives an error
#2nd attempt:
strings <- c("alcium", "zinc")
fake <- fake %>% mutate_at(vars(contains(strings)), function(x) as.numeric(as.character(x)))
#gives an error