我期待讀.tps文件到R.讀一.tps形態測量文件爲R
示例文件現已在:
實際的文件我試圖讀入R顯然有更多的個人/ ID(> 1000)
.tps文件格式由TPSDIG生成。
http://life.bio.sunysb.edu/morph/
該文件是ANSI純文本文件。
該文件包含X和Y座標和樣本信息如下。
主要困難在於標本在屬性數量上有所不同(例如,一些有4個,有些有6個LM界標,有些有2條曲線,其他沒有,因此沒有關聯點)。
我已經嘗試使用for循環和read.table,但無法找到解決不同數量屬性的方法。
文件開始
LM=3
1 1
2 2
3 3
CURVES=2
POINTS=2
1 1
2 2
POINTS=2
1 1
2 2
IMAGE=COMPLETE/FILE/PATH/IMAGE
ID=1
SCALE=1
LM=3
1 1
2 2
3 3
CURVES=2
...
例虛設碼,如果所有的標本有屬性的數量相等,工程實例。
i<-1
landmarks<-NULL
while(i < 4321){
print(i)
landmarks.temp<-read.table(file="filepath", sep=" ", header=F, skip=i, nrows=12, col.names=c("X", "Y"))
i<-i+13
landmarks.temp$ID<-read.table(file="filepath", sep=c(" "), header=F, skip=i, nrows=1, as.is=T)[1,1]
i<-i+1
landmarks.temp$scale<-read.table(file="filepath", sep=c(" "), header=F, skip=i, nrows=1, as.is=T)[1,1]
i<-i+2
landmarks<-rbind(landmarks, landmarks.temp)
print(unique(landmarks.temp$ID))
}
我想你會想用'scan'和/或'readLines'來實現更好的控制... – 2012-03-15 23:09:30
謝謝Bolker教授, – 2012-03-16 12:34:44
謝謝Bolker教授,然而read.table似乎提供了作爲'掃描'(它是一個包裝)或'readLines'具有很大的靈活性。我開始認爲我需要逐行閱讀(使用'read.table','readLines'或'scan'),併爲每行可能的值和前一行寫入條件。我正在跳躍的人可能已經完成了這項工作。 – 2012-03-16 12:42:08