我导入了一些没有列名的数据,所以现在我有超过 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"
每一行都有不同的消息作为第五个元素,但在第四个元素之后我只想将字符串的其余部分保留在一起。
如有任何帮助,我们将不胜感激。
最佳答案
您可以将 paste
与 collapse
参数结合使用,以合并从第五个元素开始的每个元素。
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/