0

この質問は、テキスト ファイルからデータを抽出するという質問の続きであり、明確化したものです。

私は Windows マシンの前に座っており、Putty を使用してジョブをスーパーコンピューターに送信しています。ジョブは、次の形式のファイルを返します: http://www.d.umn.edu/~psiders/courses/chem4642/quantumchemsoftware/tutorial/gamess/methanol.out。(これは、以下を読む上で重要な .out ファイルではなく .log ファイルであることに注意してください)。

次のシェル コマンドを使用してファイルを調べます。

grep MAXIMUM FileName.log | awk '{print $4}'

これは、クリップボードにコピーして次の R ファイルを実行する一連の数値を返します。

MAX1 <- readClipboard(format=1, raw=FALSE) # reading data
plot(MAX1, type="b", ylim=c(0,0.00005), xlim=c(0,50), 
main=bquote(After~ .(length(MAX1))~ iterations))
abline(h=0.00001, col="red")

これは、計算のグラフィカル表現を返します。

(他の人は perl スクリプトでこれを行います)。

計算が完了したら、スーパーコンピューターからファイルを抽出し、Windows システムに保存します。

私がやりたいことは、Windows 環境内で .log ファイルを調べることができる R スクリプトを準備することです。

ディレクトリを変更し、ファイルを一覧表示し、readLines を使用してファイルを R に取り込む方法を知っています。

grep("MAXIMUM",readLines("FileName.log"), value=TRUE) #searching files

しかし、これはプロットに入れることができる数値の文字列として値を返しません。「awk」が適用されていない文字列のように見えます。

この最後の部分を解決するのを手伝ってくれる人はいますか?

4

2 に答える 2

3

Ifggrepthen の結果です:

read.table(text = g)[, 4]
于 2013-04-23T12:29:08.793 に答える
1

grep と awk に似たアプローチを使い続けたい場合は、次の方法が役立ちます。

selected.lines <- grep("MAXIMUM",readLines("FileName.log"), value=TRUE)
values <- unlist(lapply(selected.lines, function(x) { s<-strsplit(x, " +"); return(s[[1]][5]) }))

しかし、read.table を使用してアプローチを再考すると、より簡単で高速になる可能性があります。

于 2013-04-23T12:22:32.100 に答える