2015-06-12 111 views
-2

我想在R中編寫一個程序,它將採用.pdb文件併發出.xyz文件。在R的grep樣功能

我在清除一些包含無用數據的行時遇到了問題。大約有30-40萬行,我只需要大約3000行。包含有用信息的行以單詞「ATOM」開始。

在UNIX終端,我只想用命令

grep ATOM <filename.pdb> newfile.xyz 

,但我不知道如何與R.

來達到同樣的效果

謝謝您的幫助!

+2

您的標題看起來不符合您的問題 –

+1

我編輯了您的問題的標題。解釋你到目前爲止做了什麼會是非常有幫助的。例如,你如何導入pdb文件? – nico

+0

對不起,標題混亂了。 我使用Rpdb-package導入文件。該命令將是read.pbd(文件名)。 我已經做了很多,我可以展示。我知道在完成這個部分後該怎麼做。現在只需要刪除不需要的信息。 – Bdrs

回答

0

您應該可以使用grep,根據您的具體情況,也許substr

例如

#Random string variable 
stringVar <- c("abcdefg", "defg", "eff", "abc") 

#find the location of variables starting with "abc" 
abcLoc <- grep("abc", substr(stringVar, 1, 3)) 

#Extract "abc" instances 
out <- stringVar[abcLoc] 
out 

注意,substr部分將搜索限制在僅STRINGVAR的每個元素的前三個字符(例如,「ABC」,「DEF」,等等)。這可能不是絕對必要的,但我發現它有時非常有用。例如,如果您有一個您不想包含的「defabc」元素,則使用substr將確保它不會被grep「找到」。

希望它有幫助。

+0

或者,因爲grep使用正則表達式,所以你可以使用'grep(「^ abc」,stringVar)' –

+0

你可以跳過創建abcLoc和單獨的子集行:'grep(「^ abc」,stringVar,value = T)' – arvi1000