String 查找字符串中的空格数
如何根据空间创建不同的栏目,例如:“我要出去”String 查找字符串中的空格数,string,r,String,R,如何根据空间创建不同的栏目,例如:“我要出去” ans3 第1列第2列第3列第14列 我要出去 如果您想要实际的列值,如您的示例所示,那么您可以从文本连接读取表格: > read.table(textConnection("I am going Out")) V1 V2 V3 V4 1 I am going Out 要回答问题的标题,即有多少空格,您可以使用ncol计算上述列,然后减去一列。但是,如果您只对空间的数量感兴趣,则以下方法更有效: length(gregexpr
ans3
第1列第2列第3列第14列
我要出去
如果您想要实际的列值,如您的示例所示,那么您可以从文本连接读取表格:
> read.table(textConnection("I am going Out"))
V1 V2 V3 V4
1 I am going Out
要回答问题的标题,即有多少空格,您可以使用ncol
计算上述列,然后减去一列。但是,如果您只对空间的数量感兴趣,则以下方法更有效:
length(gregexpr(" ", "I am going Out")[[1]])
这将使用正则表达式搜索空格
[[1]]
获取结果列表的第一个元素,该元素对应于输入向量的第一项,其中“我要出去”是其唯一的元素。如果在那里传递了不同的向量,则列表可能包含多个元素,或者对于空向量,可能根本没有元素
如果没有空格,gregexpr
仍将返回长度为1
的列表,并将-1
作为匹配位置,以指示没有匹配。在这种情况下,这会导致上述代码错误地报告一个结果。下面是一个更详细的解决方案,它处理这个问题并接受向量作为输入:
countSpaces <- function(s) { sapply(gregexpr(" ", s), function(p) { sum(p>=0) } ) }
另一种方法是使用
strsplit
功能:
R> strsplit("I am going Out", " ")[[1]]
[1] "I" "am" "going" "Out"
所以我们把第一个参数-我要出去
-和第二个参数-分开,第二个参数是空的。然后我们可以使用长度:
R> length(strsplit("I am going Out", " ")[[1]])
[1] 4
我必须承认,我没有认真阅读,所以这可能不是你想要的,但有可能是
x <- "I am going Out"
nchar(x)- nchar(gsub(" ", "", x))
您还可以从stringr
包中使用stru count
。这些代码不太冗长,避免正则表达式的速度可能会快一点
library(stringr)
text = "I am going Out"
#matches regular expression
str_count(text, ' ')
或者,如果你想要更快的东西
#matches literal text
str_count(text, fixed(' '))
+1.根据他们想要什么,这可能更合适:length(gregexpr(“[]+”,“我要出去”)[[1]])
(答案=3)。用这个短语(加上额外的空格),你使用的方法计算每个空格。如何在注释中添加多个空格?@mrdwab,请参阅。解决方法:使用非中断空间,以U+00A0 unicode代码点的形式输入。如何在dataframe上运行此代码并在同一数据集中的新列中获得此函数结果。谢谢嘿,我尝试了这段代码,似乎我们得到了相同的结果,对于有一个空格或没有空格的条目,例如:mike waugh result=1,还有mike result=1…………这个问题的任何解决方案,但我们不想知道字数。因此,我认为MvG的答案更合适。我同意@MvG的答案更好,但我不同意你对“我们不知道单词数量”的评论。我们想知道空格的数量,而不是单词的数量。你计算的字数。@rinni很好,正确的一点。我怀疑OP想知道单词的数量——但我只是在这里猜测。也许你想要read.fwf
,尽管我不确定你想要的是什么。
library(stringr)
text = "I am going Out"
#matches regular expression
str_count(text, ' ')
#matches literal text
str_count(text, fixed(' '))