非常感谢你的帮助.
是.我应该提供一个更好的例子.
这是我的输入文件(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)
没有最小可重复的例子,很难看出实际出现了什么问题.但是strsplit(df[x, 3], "|")不起作用,因为|符号是字符中的特殊情况(正则表达式为或).你实际上需要双重逃避:
strsplit("ab|cd",split="\\|")
Run Code Online (Sandbox Code Playgroud)