返回已从数据框中修剪多少修剪

时间:2019-05-03 09:04:36

标签: r

我正在使用trimws(x)修剪数据集中的空白。

就像在excel中“查找并替换”的输出一样,我想知道修剪器做了多少工作;具体来说,是从整个数据帧中删除了多少空白-主要是为了我的满意,但也有可能进一步将triws所做的工作与其他变量进行分组,以查看上游是否有任何模式蔓延到空白。< / p>

示例:

x <- "  Some text.  "

trimws(x)

然后是一些输出,例如:

# trimws removed 1708 white space characters and 13 new line characters

2 个答案:

答案 0 :(得分:1)

这是删除的空白字符的数量:

x <- "  Some text.  "
nchar(x) - nchar(trimws(x)) # no of whitespace characters removed
## [1] 4  

示例中唯一的空格是空格,但是大概只有换行符,return和tab出现在修剪的部分中,因此,如果这些空格也是可能的,那么这给出了删除的空格数:

xx <- gsub("[\n\r\t]", "", x)
nchar(xx) - nchar(trimws(xx))  # no of spaces removed

和上面给出的第一个代码段之间的区别是删除的非空格数。

答案 1 :(得分:0)

根据您的示例,您可以修改trimws()(可用的here)的当前代码。

您只需要将sub()更改为grep(),以计算在space中发现了多少x个字符。

my_trimws = function(x, which = c("both", "left", "right")) {
  which = match.arg(which)
  mysub = function(re, x) grep(re, x, perl = TRUE)

  if (which == "left")
    n <- mysub("^[ \t\r\n]+", x)
  if (which == "right")
    n <- mysub("[ \t\r\n]+$", x)

  n <- sum(mysub("^[ \t\r\n]+", x), mysub("[ \t\r\n]+$", x))

  cat("trimws() removed ", n, " spaces\n") # prints to the console
  return(n)
}

您的示例:

x <- "  Some text.  "
r <- my_trimws(x)
#trimws() removed  2  spaces
# r
# [1] 2