J'ai une base de données qui a plusieurs variables avec une chaîne (les variables), et j'essaie de déterminer si la chaîne dans les variables an
apparaît dans la colonne string
. Chaque variable an
a une variable cn
correspondante. Par exemple, je souhaite que c1
contienne Checked
si la chaîne a1
apparaît dans string
, et ainsi de suite. J'ai développé la solution de boucle ci-dessous pour cela (quelques exemples de données à la fin de ce post) mais je me demandais s'il y avait une solution de famille d'application à cela qui pourrait être plus rapide et plus facile à coder? Dans les données réelles, il existe plus de 100 variables a et c.Appliquer une solution de famille pour plusieurs boucles?
#For loop solution
for (var in seq(2, 10, 2)){
for (i in 1:nrow(df)){
df[i, var]<-ifelse(grepl(df[i, var-1], df$string[i])=="TRUE", "Checked", "Unchecked")
}
}
#### Example data ####
a1<-c("zebra", "giraffe", "elephant")
a2<-c("hyena", "monkey", "antelope")
a3<-c("badger", "deer", "kangaroo")
a4<-c("tiger", "lion", "coyote")
a5<-c("penguin", "bear", "gorilla")
c1<-""
c2<-""
c3<-""
c4<-""
c5<-""
string<-c("elephant/bear/coyote/penguin/monkey",
"giraffe/antelope/monkey/gorilla/tiger",
"elephant/antelope/kangaroo/coyote/gorilla")
df<-cbind.data.frame(a1, c1, a2, c2, a3, c3, a4, c4, a5, c5, string,
stringsAsFactors=F)