我想洗掉n1字符向量中與公式中的元素部分(不完全)重疊的部分f1。
例如,在 中n1,我們看到"study_typecompare"&"study_typecontrol"與study_typein部分重疊f1。
因此,在 中desired_output,我們要洗掉其中的"study_type"一部分。因為其他元素(例如factor(v_gi))n1與 中的元素完全重疊f1或不存在(例如intrcpt)f1,所以我們保持它們不變。
是否desired_output可以在 BASE R 或 tidyvesrse 中獲得我的(以下)?
我嘗試了以下方法,但它錯誤地v_gi從內部掉落factor(v_gi):
f1 <- gi ~ factor(v_gi) study_type
n1 <- c("intrcpt","factor(v_gi)","study_typecompare","study_typecontrol")
fun1 <- function(fmla, vec) {
v1 <- all.vars(fmla)
v2 <- setdiff(vec, v1)
v3 <- sub(paste(v1, collapse = "|"), "", v2)
vec[vec %in% v2] <- v3
vec
}
# EXAMPLE OF USE:
fun1(f1, n1)
# Current Output:
[1] "intrcpt" "factor()" "compare" "control" ## Notice `factor()` has errounousely lost its`v_gi`
desired_output = c("intrcpt","factor(v_gi)","compare","control")
uj5u.com熱心網友回復:
在該setdiff行之后,pastea^作為字串的前綴,因此在sub它只匹配開頭。
fun1 <- function(fmla, vec) {
v1 <- all.vars(fmla)
v2 <- setdiff(vec, v1)
v1 <- paste0('^', v1)
v3 <- sub(paste(v1, collapse = "|"), "", v2)
vec[vec %in% v2] <- v3
vec
}
fun1(f1, n1)
# [1] "intrcpt" "factor(v_gi)" "compare" "control"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/393377.html
上一篇:什么應該是空字串添加一個值
