目的:
- 比较45列与分别与29:40列的差异倍数,保存至少9个差异数大于2倍的row
思路:
- 笨方法,使用fread读取数据,参数与先前一致。
- 使用for循环方式一次比较列的差异。(等技术提高再进行修改)
问题:
当根据x,y索引的时候,报错提示:
Error in
[.data.table(input_table, i, j) : j (the 2nd argument inside [...]) is a single symbol but column name 'j' is not found.
但是当我使用read.table()却无任何报错。
报错代码如下:
library(read.table)
input_table <- fread(in_file_name,header = T,quote="",fill=T,check.names = F); #load file;
# input_table <- read.table(in_file_name,header = TRUE,sep="\t",comment.char = "",fill=T,quote = "")#load file
i <-1
j <-1
input_table[i,j]
改进代码如下:
library(read.table)
input_table <- fread(in_file_name,header = T,quote="",fill=T,check.names = F); #load file;
# input_table <- read.table(in_file_name,header = TRUE,sep="\t",comment.char = "",fill=T,quote = "")#load file
i <-1
j <-1
input_table[i,j]
p<-colnames(input_table) #使用其他方式避开此trick
input_table[i,get(p[j])]
全部代码如下:
library(read.table)
input_table <- fread(in_file_name,header = T,quote="",fill=T,check.names = F); #load file;
# input_table <- read.table(in_file_name,header = TRUE,sep="\t",comment.char = "",fill=T,quote = "")#load file
paste("1_load file success!\n")
#step2,获取差异显著的列的index(差异数大于2倍,且大于任意9个组织)
p<-colnames(input_table) #此处一定要加,防止报错
x <c()
nrow(input_table)
for(row_line in 1:nrow(input_table)){ #遍历行
#print(row_line)
count <- 0
for(hit in 29:40){
# input_table[row_line,get(p[hit])]
temp <- input_table[row_line,get(p[hit])]
if(input_table[row_line,45] / temp >= 2 && temp !=0){
count = count +1
}else if (temp == 0 && input_table[row_line,45] !=0){
count = count +1
}
}
if(count >=9){#save index
x <- c(x,row_line)
}
}
网友评论