R:用 Space 分隔文本字符串并删除制表符、换行符等

R: Separate Text String by Space and Remove Tabs, Line Breaks, Etc

阅读 HTML table 后,我的 name 栏出现如下记录:

\n\t\t\t\t\t\t\t\t\t\t\t\t\tMike Moon\n\t\t\t\t\t\t\t\t

以下代码无法在名字和姓氏列中生成正确的值

separate(data=nametable, col = Name, into = c("First","Last"), sep= " ")

奇怪的是,First 列是空白的,而 Last 列只包含此人的名字。

我怎样才能正确地将此列转换为所需的 FirstLast 列(即...

First     Last
Mike      Moon

根据@r2evans 的推荐并出现在以下正确答案代码中的数据示例:

nametable <- data.frame(Name="\n\t\t\t\t\t\t\t\t\t\t\t\t\tMike Moon\n\t\t\t\t\t\t\t\t", stringsAsFactors=FALSE)

在继续之前从字段中删除 trim 空格可能会有所帮助。 trimws 删除 "leading and/or trailing whitespace from character strings"(来自 ?trimws)。

数据:

nametable <- data.frame(Name="\n\t\t\t\t\t\t\t\t\t\t\t\t\tMike Moon\n\t\t\t\t\t\t\t\t", stringsAsFactors=FALSE)

library(dplyr)
nametable %>% mutate(Name = trimws(Name))
#        Name
# 1 Mike Moon

我推断你用的是dplyr以及tidyr,所以我在这里使用它。在没有 dplyr 用法的情况下执行 nametable$Name <- trimws(nametable$Name) 也非常简单。 从这里开始,就像您最初编码的那样:

nametable %>%
  mutate(Name = trimws(Name)) %>%
  tidyr::separate(col=Name, into=c("First", "Last"))
#   First Last
# 1  Mike Moon