将格式正确的字符串转换为数据框

ECI*_*CII 5 r

我有

x<-"1, A | 2, B | 10, C "
Run Code Online (Sandbox Code Playgroud)

x始终采用这种方式格式化,|表示新行,第一个值是variable1,第二个值是variable2

我想将其转换为 data.frame

  variable1 variable2
1         1         A
2         2         B
3        10         C
Run Code Online (Sandbox Code Playgroud)

我还没有找到任何可以理解转义字符的包|

我怎样才能将它转换为data.frame

akr*_*run 3

在替换with后,我们可以使用read.tablefrombase R将字符串读入两列|\\n

\n
read.table(text = gsub("|", "\\n", x, fixed = TRUE), sep=",", \n    header = FALSE, col.names = c("variable1", "variable2"), strip.white = TRUE )\n
Run Code Online (Sandbox Code Playgroud)\n

-输出

\n
 variable1 variable2\n1         1        A \n2         2        B \n3        10        C \n
Run Code Online (Sandbox Code Playgroud)\n
\n

或者使用fread来自data.table

\n
library(data.table)\nfread(gsub("|", "\\n", x, fixed = TRUE), col.names = c("variable1", "variable2"))\n   variable1 variable2\n1:         1         A\n2:         2         B\n3:        10         C\n
Run Code Online (Sandbox Code Playgroud)\n
\n

或使用tidyverse-separate_rows拆分列,然后使用以下命令创建两列separate

\n
library(tidyr)\nlibrary(dplyr)\ntibble(x = trimws(x)) %>% \n  separate_rows(x, sep = "\\\\s*\\\\|\\\\s*") %>%\n  separate(x, into = c("variable1", "variable2"), sep=",\\\\s+", convert = TRUE)\n# A tibble: 3 \xc3\x97 2\n  variable1 variable2\n      <int> <chr>    \n1         1 A        \n2         2 B        \n3        10 C      \n
Run Code Online (Sandbox Code Playgroud)\n