r - 在 R 中分割字符串,不同的分割参数元素

标签 r split strsplit

我导入了一些没有列名的数据,所以现在我有超过 100 万行和 1 列(而不是 5 列)。

每一行的格式如下:

x <- "2012-10-19T16:59:01-07:00 192.101.136.140 <190>Oct 19 2012 23:59:01: %FWSM-6-305011: Built dynamic tcp translation from Inside:10.2.45.62/56455 to outside:192.101.136.224/9874"

strsplit( x , split = c(" ", " ", "%", " "))

得到了

[[1]]
 [1] "2012-10-19T16:59:01-07:00"    "192.101.136.140"             
 [3] "<190>Oct"                     "19"                          
 [5] "2012"                         "23:59:01:"                   
 [7] "%FWSM-6-305011:"              "Built"                       
 [9] "dynamic"                      "tcp"                         
[11] "translation"                  "from"                        
[13] "Inside:10.2.45.62/56455"      "to"                          
[15] "outside:192.101.136.224/9874"

我知道这与回收 split 参数有关,但我似乎不知道如何按照我想要的方式得到它:

    [[1]]
     [1] "2012-10-19T16:59:01-07:00"    "192.101.136.140"             
     [3] "<190>Oct 19 2012 23:59:01     "%FWSM-6-305011
     [5] Built dynamic tcp translation from Inside:10.2.45.62/56455 to outside:192.101.136.224/9874"

每一行都有不同的消息作为第五个元素,但在第四个元素之后我只想将字符串的其余部分保留在一起。

如有任何帮助,我们将不胜感激。

最佳答案

您可以将 pastecollapse 参数结合使用,以合并从第五个元素开始的每个元素。

A <- strsplit( x = "2012-10-19T16:59:01-07:00 192.101.136.140 <190>Oct 19 2012 23:59:01: %FWSM-6-305011: Built dynamic tcp translation from Inside:10.2.45.62/56455 to outside:192.101.136.224/9874", split = c(" ", " ", "%", " "))

c(A[[1]][1:4], paste(A[[1]][5:length(A[[1]])], collapse=" "))

正如 @DWin 指出的, split = c("", "", "%", "") 没有按顺序使用 - 换句话说,它与 split = 相同c("", "%")

关于r - 在 R 中分割字符串,不同的分割参数元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17869549/

相关文章:

r - 如何从倒置的钟形曲线中采样

javascript - 删除 JavaScript 中不需要的空格和逗号

html - 如何通过 html 标签或正则表达式拆分文本文件,以便将其另存为 R 中的单独文本文件?

regex - 删除具有缺失值的数据框列中字符串后的所有内容

r - 如何在knitr中获取 block 名称?

r - `dplyr::bind_rows` 组合列出的小标题时不起作用

javascript - 拆分键值对,给它们新的键

javascript - 在拆分中包含分隔符(javascript)

python - 在多种条件下提取列中每行的第一个单词

r - 使用 dplyr 在 R 中进行总结 : values in 2 different columns