-3

大変お世話になりました。

はい。より良い例を提供する必要があります。

これが私の入力ファイルです(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

ここに私の出力ファイルがあります

    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

(1) 以下のコマンドに従って、次のように 6 行目にいくつかの変更を加えました。

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

(2) df ファイルを次のように呼び出そうとしました。

df <- read.csv(file="3columns.csv",header=TRUE,stringsAsFactors=FALSE)

\\(3)前にも追加してみました|

これらの方法はすべてうまくいかなかったので、以下の回答を誤解したのではないかと思います. よろしければ、さらにご案内をいただけますでしょうか。

よろしく、キャサリン

------元の質問--------------------------

strsplitR のコマンドを使用して、シンボルに基づいてセルを分離したいと考えています"|"

ただし、次のエラー メッセージが表示されます。

Error in strsplit(df[x, 3], "|") : non-character argument.

このエラー メッセージはどういう意味ですか?

このエラーを修正するにはどうすればよいですか?

この Web サイトの前の質問に記載されているコマンド ラインを使用していました。

> 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)       
+ })     
+ )   
+ ) 
+ )
4

2 に答える 2

8

最小限の再現可能な例がなければ、実際に何が問題なのかを理解するのは困難です。ただし、記号は文字の特殊なケース (or の正規表現) であるためstrsplit(df[x, 3], "|")、機能しません。|実際にはこれを二重にエスケープする必要があります:

strsplit("ab|cd",split="\\|")
于 2011-04-08T14:39:32.650 に答える
2

|正規表現で使用される特殊文字です。目的の効果を得るには、 |withをエスケープする必要があります。\\

x <- "abc|xyz|123|456|foo|bar|baz|bat|wheee"

strsplit(x, "\\|")

[[1]]
[1] "abc"   "xyz"   "123"   "456"   "foo"   "bar"   "baz"   "bat"   "wheee"

?regex文字の全リストを見つけるには、「特殊文字」を参照して検索してください。

于 2011-04-08T14:42:46.540 に答える