Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 查找字符串中的空格数_String_R - Fatal编程技术网

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(' '))