对于文档str_split中stringr包指出,该模式参数:
如果""分成单个字符.
这表明它strsplit在这方面的表现与此相同.然而,
library(stringr)
str_split("abcab","")
[[1]]
[1] "" "a" "b" "c" "a" "b"
Run Code Online (Sandbox Code Playgroud)
带有前导空字符串.与之相比,
strsplit("abcab","")
[[1]]
[1] "a" "b" "c" "a" "b"
Run Code Online (Sandbox Code Playgroud)
在拆分非空字符串时,前导空字符串似乎是正常行为,
strsplit("abcab","ab")
[[1]]
[1] "" "c"
Run Code Online (Sandbox Code Playgroud)
但即使这样,也会str_split生成一个'额外'尾随空字符串:
str_split("abcab","ab")
[[1]]
[1] "" "c" ""
Run Code Online (Sandbox Code Playgroud)
这种差异是一个错误,功能,文档中的错误还是只是一个不同的"预期行为"概念?
如果您使用逗号作为分隔符,“预期”(您的里程可能会有所不同)结果会更加明显:
\n\n# expect "" "2" "3" "4" ""\n\nstrsplit(",2,3,4,", ",")\n# [[1]]\n# [1] "" "2" "3" "4"\n\nstr_split(",2,3,4,", ",")\n# [[1]]\n# [1] "" "2" "3" "4" "" \nRun Code Online (Sandbox Code Playgroud)\n\n如果我有n逗号,那么我希望(n+1)返回元素。所以我更喜欢 的结果str_split。但是,我不一定会将此称为 中的错误strsplit,因为 中 的执行情况如广告所示:
\n\n\n(来自 ?strplit)请注意,这意味着如果\na(非空)字符串的开头有匹配项,则输出的第一个元素是 \xe2\x80\x98""\xe2\x80\x99,但如果字符串末尾有匹配项,则输出与删除匹配项时的输出相同。
\n
""""比较棘手,因为无法计算字符串中出现的次数。因此,将其视为特殊情况似乎是合理的。
\n\n\n(来自 ?str_split)如果 \xe2\x80\x98""\xe2\x80\x99 分割成单个字符。
\n
基于此,我建议您发现了一个错误,应该采纳哈德利的建议并报告它!
\n| 归档时间: |
|
| 查看次数: |
1434 次 |
| 最近记录: |