在竖线字符“|”处拆分字符串

Split string at a vertical bar character "|"

我觉得这个问题被问了很多,但我找到的所有解决方案都不适合我。

我有一个 dataframe,其中有一列(称为 ID),其中有一串数字和字母(例如:Q8A203)。在几行中,有两个由竖线分隔的结构(例如:Q8AA66|Q8AAT5)。对于我的分析,我保留哪个并不重要,所以我想创建一个名为 NewColumn 的新列,我在其中传输第一个并将字符串拆分为 |.

我知道竖线必须区别对待,我必须把\放在前面。我尝试了 strsplit()unlist():

df$NewColumn <- strsplit(df$ID,split='\|',fixed=TRUE)
df$NewColumn <- unlist(strsplit(df$ID, " \| ", fixed=TRUE))

两个选项 return 从第 ID 列到 NewColumn 的内容完全相同。

非常感谢您的帮助。

无需拆分,您只需将第二部分替换为空即可,这样会保留第一个 ID。

df <- data.frame(ID = c("Q8A203", "Q8AA66|Q8AAT5"))
df$NewColumn <- sub("\|.*$","", df$ID, )
df  
#              ID NewColumn
# 1        Q8A203    Q8A203
# 2 Q8AA66|Q8AAT5    Q8AA66

请下次添加一个最小的可复制示例(您的 df 此处)以加快回答速度;)

如果您删除固定选项,strsplit 可以工作,但您需要提供一个准确的正则表达式。此外,之后您将需要使用一个列表,这更复杂。

# Working with a list
unlist(lapply(strsplit(df$ID, split='\|'), "[[", 1))