数据框中的 R strsplit 函数

Pet*_*ung 2 regex split r dataframe

我创建了一个数据框,现在我想通过拆分第一列中的“:”来分隔一个新列。

data frame:
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results:ASL|435  214.4421
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results:ASS1|445 2863.8055
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results:OTC|5009 0
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results:ASL|435  332.7522
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results:ASS1|445 3322.629
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results:OTC|5009 0

desired output:
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results  ASL|435 214.4421
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results  ASS1|445    2863.8055
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results  OTC|5009    0
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results  ASL|435 332.7522
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results  ASS1|445    3322.629
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results  OTC|5009    0
Run Code Online (Sandbox Code Playgroud)

我试过了

strsplit(df$V1, split = "\\:")
Run Code Online (Sandbox Code Playgroud)

但是 strsplit(t$V1, split = "\:") 中的错误:出现非字符参数。谢谢你。

akr*_*run 5

错误是因为我们有一个 class 变量factor。将其转换为character它应该可以工作

lst <- strsplit(as.character(df$V1), split = ":", fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)

如果我们需要创建两列,一种简单的方法是使用 read.table

df1 <- read.table(text = as.character(df$V1), sep=":", stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

或者使用separatetidyr

library(tidyr)
separate(df1, V1, into = c("V1", "V2"))
Run Code Online (Sandbox Code Playgroud)