我對R非常陌生,在讀取文件時遇到錯誤。R解析tsv,下標越界錯誤
importSilvaNgsDataFile <- function(file){
sampleNames <- unlist(strsplit(readLines(file,n=1),split="\t"))
otuTable <- read.csv(file, header=FALSE, sep="\t",quote="",dec=".", skip=1,row.names=length(sampleNames)+1)
inputData <- list(sampleNames=sampleNames, otuTable=otuTable)
return(inputData)
}
mydata <- importSilvaNgsDataFile('silva_otus.tsv')
這給出了錯誤:
Error in data[[rlabp]]: subscript out of bounds
silva_otus.tsv
樣子:
31_F6_57.8 32_F7_55.4 36_F1_57.1 37_F2_57.2 41_E6_55.1 42_E7_56.6 43_E8_57.3 44_E9_58.3 46_D1_55 47_D2_56.7 48_D3_57.2 49_D4_58 51_D6_53.6 52_D7_55 53_D8_56.7 56_E1_52.4 57_E2_55.2 58_E3_56.6
ID0000002M 408 355 293 805 256 292 614 345 505 455 353 53 231 203 417 581 249 342
ID0000003M 120 207 43 142 71 60 266 825 89 87 194 1807 91 68 261 151 33 69
ID0000007M 13 16 12 37 9 9 25 62 7 13 15 120 9 6 38 16 10 12
我無法看到rlabp
來了,我從來沒有在指數試圖進入任何與[rlabp]
。我試圖尋找rlabp
並沒有看到任何明顯的聯繫。功能有問題嗎?
看起來像這是一個問題e預期的行數,你確定strsplit操作中的那個row.names數是你所追求的嗎? – Shape
你的row.names是一個數字「20」,但它應該是一個長度等於行號的向量。即使你說'1:length(sampleNames)+ 1',當你只有3行時,它就是20個項目的向量。請查看你想用'row.names'實現的目標 – Ananta