我有兩個清單:
n <- ' winner'
p_list < - c('qualified'/span>, 'female', 'apple')
df_features < - c('female'。 'qualified','acmission'。 'apple_B', 'apple_C', 'apple_D')
我想生成一個這樣的公式,給定p_list和df_features:
winner ~ apple_B apple_C apple_D female qualified
基本上,我得到了p_list和n。我想創建一個公式,n是結果,p_list是回歸者。然而,如果p_list中的一個元素不在df_features中,我想改變該元素,使其被df_features中下劃線(_)前的任何相同文本取代。因此,蘋果將被替換為apple_B apple_C apple_D。希望這有意義。
我怎樣才能做到這一點?
我怎樣才能在R中做到這一點(如果可能的話,我更喜歡dplyr的解決方案)。
到目前為止,我已經試過這樣做了:
f <- as. 公式(paste(n, "~",paste(p_list, collapse=" ")))
但是現在的解決方案沒有考慮到df_features和變數apple的改變。
我也能夠通過p_list檢查df_features中的值是否在df_features中,但現在不確定如何使用它。
uj5u.com熱心網友回復:
grep從df_features中取出那些匹配p_list的內容,并與reformulate一起使用,以產生公式。 沒有使用包。
reformulate(unlist(sapply(p_list, grep, df_features。 值= TRUE))。 n)
## winner ~ qualified female apple_B apple_C apple_D
uj5u.com熱心網友回復:
G.Grothendieck的回答非常好,我幾乎對發布我的回答感到羞愧。然而,我還是要這么做,因為我發現有時候走遠路會給你帶來更多關于手頭工具的知識:
as.formula(paste0(n,)
" ~ ",
粘貼(c(p_list[/span>p_list %in%df_features == TRUE]。
grep(p_list[p_list %in% df_features == FALSE]。
df_features,
value=TRUE)),
崩潰 = " "))
里面的內容:
as.formula將字串轉換為公式。paste0將粘貼存盤在n中的字串,tilde和paste的結果。paste將連接,使用 " "作為折疊器(collapse = " "):p_list中的那些元素是在df_features中的(因此,TRUE)- 并且它將在
df_features上搜索那些不直接匹配的元素(FALSE),回傳值而不是索引(value = TRUE)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/322201.html
標籤:
上一篇:取多個不同大小的隨機樣本
