strsplit符号"|" 导致R中的非字符错误消息

Cat*_*ine -2 r strsplit

非常感谢你的帮助.

是.我应该提供一个更好的例子.

这是我的输入文件(3columns.csv)

    Patients    Markers Studies
1   AA         EXX         1111
2   BB         ABCB1           2222|3333|5555|6666
3   CC         CCAN        4444|5555
4   DD         ABCB1           6666
Run Code Online (Sandbox Code Playgroud)

这是我的输出文件

    Patients    Markers Studies
1   AA         EXX         1111
2   BB         ABCB1           2222
2   BB         ABCB1           3333
2   BB         ABCB1           5555
2   BB         ABCB1           6666
3   CC         CCAN        4444
3   CC         CCAN        5555
4   DD         ABCB1           6666
Run Code Online (Sandbox Code Playgroud)

(1)根据以下命令,我对第6行进行了如下更改

sapply(unlist(strsplit(as.character(df[x,3]),"\\|")),c,df[x,1:2],USE.NAMES=FALSE) 
Run Code Online (Sandbox Code Playgroud)

(2)我试着将df文件调用为

df <- read.csv(file="3columns.csv",header=TRUE,stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

(3)我\\之前也尝试过添加|

所有这些方法都不起作用,所以我怀疑我可能误解了下面的答复.你介意给我一些指导吗?

最诚挚的问候,凯瑟琳

------原始问题--------------------------

我想使用R的strsplit命令根据符号分隔单元格"|".

但是,会显示一条错误消息:

Error in strsplit(df[x, 3], "|") : non-character argument.
Run Code Online (Sandbox Code Playgroud)

这个错误信息是什么意思?

我该如何更正此错误?

我正在使用本网站上一个问题中列出的命令行:

> write.csv(df, file="3columns.csv")
> as.data.frame(   
+ t(     
+ do.call(cbind,       
+ lapply(1:nrow(df),function(x){         
+ sapply(unlist(strsplit(df[x,3],"|")),c,df[x,1:2],USE.NAMES=FALSE)       
+ })     
+ )   
+ ) 
+ )
Run Code Online (Sandbox Code Playgroud)

Sac*_*amp 7

没有最小可重复的例子,很难看出实际出现了什么问题.但是strsplit(df[x, 3], "|")不起作用,因为|符号是字符中的特殊情况(正则表达式为或).你实际上需要双重逃避:

strsplit("ab|cd",split="\\|")
Run Code Online (Sandbox Code Playgroud)