我想知道是否有可能洗掉n1字符向量中與公式中的元素部分重疊的部分f1。
例如,在 中n1,我們看到"study_typecompare"&"study_typecontrol"與study_typein部分重疊f1。
因此,在 中desired_output,我們要洗掉其中的"study_type"一部分。因為其他元素(例如time_wk_whn)n1與 中的元素完全重疊f1,所以我們保持它們不變。
desired_output在 BASER或 tidyvesrse獲得我的可能嗎?
f1 <- gi ~ 0 study_type time_wk_whn time_wk_btw items_whn
items_btw training_hr_whn training_hr_btw
n1 <- c("study_typecompare","study_typecontrol","time_wk_whn",
"time_wk_btw","items_whn","items_btw","training_hr_whn",
"training_hr_btw")
desired_output <- c("compare","control", "time_wk_whn",
"time_wk_btw","items_whn","items_btw",
"training_hr_whn","training_hr_btw")
uj5u.com熱心網友回復:
我們創建了一個函式來分別傳遞公式和向量 ('fmla', 'vec')。從 'fmla' ( all.vars) 中提取變數,找到公式變數 ( setdiff)中未找到的向量中的值,通過paste這些變數創建模式并使用 替換為空白 ( "") sub,然后更新 'vec',回傳更新后的向量
fun1 <- function(fmla, vec) {
v1 <- all.vars(fmla)
v2 <- setdiff(vec, v1)
v3 <- sub(paste(v1, collapse = "|"), "", v2)
vec[vec %in% v2] <- v3
vec
}
-檢查
> identical(fun1(f1, n1), desired_output)
[1] TRUE
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/393386.html
上一篇:切片字串會復制底層資料嗎?
