我目前有10个向量,如下所示:
string1 <- c("house", "home", "cabin")
string2 <-c("hotel", "hostel", "motel")
等10个字符串。
R新手学习功能。我想要在这10个字符串中执行以下代码,然后转入函数。此代码接受这些字符串并搜索匹配项并创建一个新变量:
a$string.i <- (1:nrow(a) %in% c(sapply(string1, grep, a$Contents, fixed = TRUE))) +0
由于我是R的新手,我很难知道如何将其变成一个功能。我是否需要先定义字符串数量,然后设置&#39; string1&#39;在上面的代码中x?如何将变量名称=设置为字符串名称?
一些示例数据:
a <- read.table(text='Contents other
1 "a house a home" "111"
2 "cabin in the woods" "121"', header=TRUE)
答案 0 :(得分:1)
如果您需要某项功能,可以尝试:
fun1 <- function(namePrefix, dat){ #assuming that the datasets have a common prefix i.e. `string`
pat <- paste0("^", namePrefix, "\\d")
nm1 <- ls(pattern=pat, envir=.GlobalEnv)
lst <- mget(nm1, envir=.GlobalEnv)
lst2 <- lapply(lst, function(x)
(1:nrow(dat) %in% c(sapply(x, grep, dat$Contents, fixed=TRUE)))+0) #your code
dat[names(lst2)] <- lst2
dat
}
fun1("string", a)
# Contents other string1 string2
#1 a house a home 111 1 0
#2 cabin in the woods 121 1 0