[英]R function to input character vector
我目前有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時,我很想知道如何將其轉換為函數。 我是否需要先定義字符串數,然后在上面的代碼中將'string1'設置為x? 如何將變量=的名稱設置為字符串的名稱?
一些樣本數據:
a <- read.table(text='Contents other
1 "a house a home" "111"
2 "cabin in the woods" "121"', header=TRUE)
如果需要功能,可以嘗試:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.