簡體   English   中英

R中if else語句中的正則表達式

[英]Regex in if else statement in R

我有一個相當簡單的問題。 我試圖使下面的if else語句起作用。

如果滿足if語句,則應分配為“ 1”,否則為0。 我的問題是我無法在if語句中使用正則表達式來工作('\\ w * | \\ W *)。 應該指定條件,該字符串是“需要注冊”或“必須注冊”后跟任何字符。 我無法指定確切的案例,因為在“需要注冊”之后(在某些情況下),它通常是一個日期(每次觀察都不同)和幾個單詞。

Registration_cleaned <- c()

for (i in 1:length(Registration)) {
  if (Registration[i] == ' Registration Required\\w*|\\W*') {
    Meta_Registration_cleaned <- 1
  } else {
    Meta_Registration_cleaned <- 0 
  }

 Registration_cleaned <- c(Registration_cleaned, Meta_Registration_cleaned)

}

您可以將transform和ifelse函數一起使用來設置Meta_Registration_cleaned。 為了匹配正則表達式,grep函數可以與模式“ Registration Required \\ w *”一起使用。

Registration <- data.frame(reg = c("Registration Required", "Registration Required ddfdqf","some str", "Regixxstration Required ddfdqf"),stringsAsFactors = F)

transform(Registration,Meta_Registration_cleaned = ifelse(grepl("Registration Required\\w*",Registration[,"reg"]), 1, 0))

給出結果:

                      reg Meta_Registration_cleaned
1          Registration Required                         1
2   Registration Required ddfdqf                         1
3                       some str                         0
4 Regixxstration Required ddfdqf                         0

我可能完全誤解了OP,因為我對這個問題的理解與這里的其他人完全不同。

我之前的評論建議在字符串末尾查找正則表達式。

Registration <- data.frame(reg = c("Registration Required", "Registration Required ddfdqf","Registration Required 10/12/2000"),stringsAsFactors = F)

#thanks @user1653941 for drafting the sample vector

Registration$Meta_Registration_cleaned <- grepl('Registration required$', Registration$reg, ignore.case = TRUE)

Registration

1            Registration Required                      TRUE
2     Registration Required ddfdqf                     FALSE
3 Registration Required 10/12/2000                     FALSE

我對OP的理解是這樣的,條件是:要么是字符串“需要注冊”,而后沒有字符,要么是……。 期待OP的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM