【发布时间】:2017-09-22 16:00:29
【问题描述】:
我有一个数据框,其中包含多个变量和一个字符串(a1, a2, ...an 变量),我正在尝试确定an 变量中的字符串是否出现在string 列中。每个an 变量都有一个对应的cn 变量。例如,如果a1 中的字符串出现在string 中,我希望c1 在其中包含Checked,等等。我为此开发了以下 for 循环解决方案(本文末尾的一些示例数据),但我想知道是否有一个应用系列解决方案可能更快更容易编码?在真实数据中,a和c变量有100多个。
#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)
【问题讨论】: