R:在循环中使用 gsub 删除文本
R: Removing Text using gsub in loop
我正在尝试解析和清理 R 中名为 df3 的数据框中名为 Tab 的列中的字符串。这是我在 R 中采用 gsub() 函数的解决方案。
df3$Tab <- gsub(".*from","",df3$Tab)
df3$Tab <- gsub(".*FROM","",df3$Tab)
df3$Tab <- gsub("where.*","",df3$Tab)
df3$Tab <- gsub("WHERE.*","",df3$Tab)
基本上我想删除“FROM”之前的所有内容以及“WHERE”之后的所有内容。
这个解决方案有效,但我想写下一个循环,但是当我这样做时:
df3$Tab <- for (i in seq_along(df3$Tab)){
df3$Tab <- gsub(".*from","",df3$Tab)
df3$Tab <- gsub(".*FROM","",df3$Tab)
df3$Tab <- gsub("where.*","",df3$Tab)
df3$Tab <- gsub("WHERE.*","",df3$Tab)
break
}
我完全删除了 df3$Tab 列。有人可以解释我哪里错了吗?谢谢
想知道你为什么要使用循环。 one-liner 也应该有效:
df3$Tab <- gsub("(?i)(where.*|.*from)", "",df3$Tab)
(?i)
:使正则表达式成为 case-insensitive 的标志
(where.*|.*from)
:一个交替组匹配 (i) 文字 where
后跟任何零次或多次和 (ii) 文字 from
前面任何零次或多次
我正在尝试解析和清理 R 中名为 df3 的数据框中名为 Tab 的列中的字符串。这是我在 R 中采用 gsub() 函数的解决方案。
df3$Tab <- gsub(".*from","",df3$Tab)
df3$Tab <- gsub(".*FROM","",df3$Tab)
df3$Tab <- gsub("where.*","",df3$Tab)
df3$Tab <- gsub("WHERE.*","",df3$Tab)
基本上我想删除“FROM”之前的所有内容以及“WHERE”之后的所有内容。 这个解决方案有效,但我想写下一个循环,但是当我这样做时:
df3$Tab <- for (i in seq_along(df3$Tab)){
df3$Tab <- gsub(".*from","",df3$Tab)
df3$Tab <- gsub(".*FROM","",df3$Tab)
df3$Tab <- gsub("where.*","",df3$Tab)
df3$Tab <- gsub("WHERE.*","",df3$Tab)
break
}
我完全删除了 df3$Tab 列。有人可以解释我哪里错了吗?谢谢
想知道你为什么要使用循环。 one-liner 也应该有效:
df3$Tab <- gsub("(?i)(where.*|.*from)", "",df3$Tab)
(?i)
:使正则表达式成为 case-insensitive 的标志
(where.*|.*from)
:一个交替组匹配 (i) 文字where
后跟任何零次或多次和 (ii) 文字from
前面任何零次或多次