当使用基础R串的功能,如gsub和grep,是否有任何缺点,因为习惯问题,总是指定perl = TRUE?这有什么缺点吗?
有了perl=TRUE,表达式可以做更多的事情(例如,你可以使用前瞻或后面的断言,或者你可以进行大小写转换\\U),并且性能也更快,正如文档所述.
那么,有什么缺点吗?这perl = TRUE不是默认的向后兼容性吗?当perl = TRUE时,我是否应该注意可移植性问题?
我有一个 CSV 文件,我试图导入其中大小写不一致的变体以指示丢失的数据,例如:
read.csv(
text = "A,B,C
1,Not indicated, NOT indicated
4,abc,not indicated
NOT INDICATED, def, noT InDiCated")
# A B C
# 1 1 Not indicated NOT indicated
# 2 4 abc not indicated
# 3 NOT INDICATED def noT InDiCated
Run Code Online (Sandbox Code Playgroud)
我试图将它们作为函数(或来自另一个包的类似函数)导入NA ,忽略read.csv()大小写。我想要的输出是:
# A B C
# 1 1 NA NA
# 2 4 abc NA
# 3 NA def NA
Run Code Online (Sandbox Code Playgroud)
该read.csv()命令na.string接受字符串的字符向量来替换NA,但大小写变体最初是未知的,并且有太多的排列使其不切实际。
有没有一种方法可以使用正则表达式或其他替代方法来导入所有大小写变体,NA而不指定它们中的每一个?在这种特定情况下,重要的是在读入数据时(即,在数据内或类似的)而不是在附加步骤中实现这一点(即,读入数据,然后使用附加代码进行清理,(即,如此处 …
我很想知道是否可以使用 R 中的 %in% 运算符进行部分字符串匹配。我知道有很多方法可以使用 stringr 等来查找部分字符串匹配,但我当前的代码使用起来更容易%in% 运算符。
例如,想象这个向量:
x <- c("Withdrawn", "withdrawn", "5-Withdrawn", "2-WITHDRAWN", "withdrawnn")
Run Code Online (Sandbox Code Playgroud)
我希望这些都为真,因为字符串包含“撤回”,但只有第一个为真:
x %in% c("Withdrawn")
[1] TRUE FALSE FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
我尝试使用正则表达式至少使其不区分大小写,但这使一切都变得错误:
x %in% c("(?i)Withdrawn")
[1] FALSE FALSE FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
那么,是否有可能使用带有包装器的 %in% 运算符在所有这些上产生 TRUE?因为它很容易使用tolower的()或TOUPPER(),我不是因为关心区分大小写; 然而,对我来说重要的是代码会触发“撤销”、“撤销”和“5-撤销”。
编辑:这个问题被标记为这个问题的副本R 中的列表不区分大小写搜索;但是,它是不同的,因为它询问是否可以使用 %in% 运算符进行部分字符串匹配。链接的问题根本不使用 %in% 运算符。