2011-04-08 94 views
-2

非常感謝您的幫助。strsplit符號「|」導致R中的非字符錯誤信息

是的。我應該提供一個更好的例子。

這裏是我的輸入文件(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)我也嘗試過|

添加\\所有這些方法都沒有工作,所以我懷疑我可能誤解了下面的答覆。你能介意給我更多的指導嗎?

最好的問候, 凱瑟琳

------原來的問題--------------------------

我想使用R的strsplit命令來分離基於符號"|"的單元格。

但是,出現錯誤消息:

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

這個錯誤是什麼消息呢?

我該如何糾正這個錯誤?

我使用本網站前一個問題中列出的命令行:

> 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

這不是一個論壇。這是一個Q/A網站。你應該問一個問題和人們的答案。如果你得到的信息需要澄清,那麼你應該編輯你的問題是一個更好的問題。沒有理智的問題是以「非常感謝你的幫助,是的,我應該提供一個更好的例子」。如果您認爲您需要更好的示例,請編輯該問題並添加更好的示例。 – 2011-04-08 19:47:05

+0

錯誤消息告訴你,strsplit的內容不是一個字符向量。檢查它是什麼,並使其成爲角色矢量。如果有疑問,請閱讀幫助文件。 – 2011-04-08 19:51:01

回答

6

這是很難看到什麼是真正走錯了沒有最小重複的例子。但strsplit(df[x, 3], "|")不起作用,因爲|符號是字符中的特殊情況(正則表達式爲或)。您實際上需要雙重轉義:

strsplit("ab|cd",split="\\|") 
2

|是在正則表達式中使用的特殊字符。你需要躲避|\\爲了得到你之後的效果:

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

strsplit(x, "\\|") 

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

?regex並搜索「特殊字符」中找到人物的整個列表。