如何使用base在第一个逗号上有效地拆分以下字符串?
x <- "I want to split here, though I don't want to split elsewhere, even here."
strsplit(x, ???)
Run Code Online (Sandbox Code Playgroud)
期望的结果(2个字符串):
[[1]]
[1] "I want to split here" "though I don't want to split elsewhere, even here."
Run Code Online (Sandbox Code Playgroud)
先感谢您.
编辑:没想到要提这个.这需要能够推广到一个列,像这样的字符串向量,如:
y <- c("Here's comma 1, and 2, see?", "Here's 2nd sting, like it, not a lot.")
Run Code Online (Sandbox Code Playgroud)
结果可以是两列或一个长向量(我可以采用其他所有元素)或每个索引([[n]])具有两个字符串的stings列表.
对于缺乏清晰度表示道歉.
我有一个我可能会阅读的文本数据文件readLines.每个字符串的初始部分包含大量的乱码,然后是我需要的数据.乱码和数据通常由三个点分隔.我想在最后三个点之后拆分字符串,或者用某种标记替换最后三个点,告诉R将这三个点左边的所有内容都当作一列.
这是Stackoverflow上的一个类似帖子,它将找到最后一个点:
但是,在我的情况下,一些数据有小数,所以找到最后一个点是不够的.另外,我认为...R中有一个特殊的含义,这可能会使问题复杂化.另一个潜在的复杂因素是一些点比其他点大.此外,在某些行中,三个点中的一个用逗号替换.
除了gregexpr在上面的帖子我尝试过使用gsub,但无法弄清楚解决方案.
这是一个示例数据集和我希望实现的结果:
aa = matrix(c(
'first string of junk... 0.2 0 1',
'next string ........2 0 2',
'%%%... ! 1959 ... 0 3 3',
'year .. 2 .,. 7 6 5',
'this_string is . not fine .•. 4 2 3'),
nrow=5, byrow=TRUE,
dimnames = list(NULL, c("C1")))
aa <- as.data.frame(aa, stringsAsFactors=F)
aa
# desired result
# C1 C2 C3 C4
# 1 first string of junk 0.2 0 1 …Run Code Online (Sandbox Code Playgroud) 我有一个字符串数据集,并希望提取一个子字符串,包括第一个冒号.之前我在这里发帖询问如何提取第一个冒号之后的部分:在第一个冒号处拆分字符串 下面我列出了一些解决当前问题的尝试.
我知道^[^:]+:匹配我想保留的部分,但我无法弄清楚如何提取该部分.
这是一个示例数据集和所需的结果.
my.data <- "here is: some text
here is some more.
even: more text
still more text
this text keeps: going."
my.data2 <- readLines(textConnection(my.data))
desired.result <- "here is:
0
even:
0
this text keeps:"
desired.result2 <- readLines(textConnection(desired.result))
# Here are some of my attempts
# discards line 2 and 4 but does not extract portion from lines 1,3, and 5.
ifelse( my.data2 == gsub("^[^:]+:", "", my.data2), '', my.data2)
# returns the portion I do …Run Code Online (Sandbox Code Playgroud)