R函数输入字符向量

时间:2014-10-01 18:59:04

标签: r function

我目前有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)

1 个答案:

答案 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