"Error in (1 - h) * qs[i] : non-numeric argument to binary operator" 每次我尝试 运行 我的代码时,它都会不断弹出
"Error in (1 - h) * qs[i] : non-numeric argument to binary operator" this keeps popping up every time i try to run my code
我有一些来自 52 名患者的原始数据,我已将原始数据格式化为第一列为 Entrez 基因 ID,接下来的 52 列为每位患者的 ID。我设置了工作目录、访问原始数据文件的位置、fdr 和 fold_change。然后我的代码 运行 像这样:
setwd(working_dir)
rawdata = read.table(rawdata_file, header = TRUE, stringsAsFactors = FALSE, row.names = NULL, sep = "\t")
dim(rawdata)
head(rawdata)
str(rawdata)
quant <- apply(rawdata, 1, quantile, 0.75)
******
keep <- which((quant >=2) ==1)
rawdata <- rawdata[keep,]
dim(rawdata)
但是一旦我到达 quant <- apply(rawdata, 1, quantile, 0.75)
,就会弹出以下错误:
Error in (1 - h) * qs[i] : non-numeric argument to binary operator
我是 R 的新手,所以如果对我的代码有任何帮助,我将不胜感激。非常感谢!
该错误意味着您正在将数学函数应用到非数字的对象上。您需要在没有第一列的情况下执行此操作。
看起来像您的数据的东西
rawdata = data.frame(ID=paste("ID",1:100),matrix(runif(100*52),ncol=52))
colnames(rawdata)[2:53] = paste("patient",1:52)
head(rawdata)
ID patient 1 patient 2 patient 3 patient 4 patient 5 patient 6 patient 7
1 ID 1 0.7147973 0.2104862 0.7846074 0.3394161 0.8544912 0.2300092 0.4161791
2 ID 2 0.3030303 0.8720105 0.2767706 0.9455382 0.4907579 0.7021114 0.5986684
patient 8 patient 9 patient 10 patient 11 patient 12 patient 13 patient 14
1 0.02630086 0.7088419 0.3951715 0.3238016008 0.9807989 0.2146602 0.8076201
2 0.21665396 0.2540735 0.6269772 0.0009961955 0.8641968 0.8014775 0.6408617
patient 15 patient 16 patient 17 patient 18 patient 19 patient 20 patient 21
1 0.03178842 0.70620702 0.7614409 0.5516146 0.05971609 0.3702968 0.90079876
2 0.27334311 0.03484481 0.4803889 0.4838688 0.52853695 0.5037140 0.03115113
patient 22 patient 23 patient 24 patient 25 patient 26 patient 27 patient 28
1 0.8249698 0.2767941 0.5306544 0.9688781 0.5995393 0.3427149 0.2921866
2 0.2949440 0.2681442 0.8809229 0.3602453 0.3122242 0.9680564 0.6417741
patient 29 patient 30 patient 31 patient 32 patient 33 patient 34 patient 35
1 0.1217374 0.5721696 0.8807429 0.09401768 0.3994375 0.5825191 0.073809400
2 0.5270218 0.1007655 0.5142553 0.17269346 0.4051577 0.1968952 0.007899745
patient 36 patient 37 patient 38 patient 39 patient 40 patient 41 patient 42
1 0.2451399 0.8466774 0.4001425 0.8081921 0.6977565 0.3230159 0.4933366
2 0.1184844 0.8383270 0.9715824 0.9436642 0.1118531 0.5044923 0.2659268
patient 43 patient 44 patient 45 patient 46 patient 47 patient 48 patient 49
1 0.5872126 0.8283301 0.4381552 0.5863271 0.06969155 0.1848659 0.91026236
2 0.9452248 0.6210323 0.5066544 0.5289093 0.71125154 0.6000685 0.05133945
patient 50 patient 51 patient 52
1 0.8214441 0.2272655 0.5048466
2 0.7853656 0.1296575 0.7862940
给出同样的错误
apply(rawdata, 1, quantile, 0.75)
Error in (1 - h) * qs[i] : non-numeric argument to binary operator
做:
data.frame(ID=rawdata$ID,value=apply(rawdata[,-1],1,quantile,0.75))
要 select 基于分位数的数据框,您需要始终使用数字列值:
quant <- data.frame(
ID=rawdata$GeneSymbol,
value=apply(rawdata[,-1],1,quantile,0.75)
)
keep <- quant[which(quant$value >= 2),]
我有一些来自 52 名患者的原始数据,我已将原始数据格式化为第一列为 Entrez 基因 ID,接下来的 52 列为每位患者的 ID。我设置了工作目录、访问原始数据文件的位置、fdr 和 fold_change。然后我的代码 运行 像这样:
setwd(working_dir)
rawdata = read.table(rawdata_file, header = TRUE, stringsAsFactors = FALSE, row.names = NULL, sep = "\t")
dim(rawdata)
head(rawdata)
str(rawdata)
quant <- apply(rawdata, 1, quantile, 0.75)
******
keep <- which((quant >=2) ==1)
rawdata <- rawdata[keep,]
dim(rawdata)
但是一旦我到达 quant <- apply(rawdata, 1, quantile, 0.75)
,就会弹出以下错误:
Error in (1 - h) * qs[i] : non-numeric argument to binary operator
我是 R 的新手,所以如果对我的代码有任何帮助,我将不胜感激。非常感谢!
该错误意味着您正在将数学函数应用到非数字的对象上。您需要在没有第一列的情况下执行此操作。
看起来像您的数据的东西
rawdata = data.frame(ID=paste("ID",1:100),matrix(runif(100*52),ncol=52))
colnames(rawdata)[2:53] = paste("patient",1:52)
head(rawdata)
ID patient 1 patient 2 patient 3 patient 4 patient 5 patient 6 patient 7
1 ID 1 0.7147973 0.2104862 0.7846074 0.3394161 0.8544912 0.2300092 0.4161791
2 ID 2 0.3030303 0.8720105 0.2767706 0.9455382 0.4907579 0.7021114 0.5986684
patient 8 patient 9 patient 10 patient 11 patient 12 patient 13 patient 14
1 0.02630086 0.7088419 0.3951715 0.3238016008 0.9807989 0.2146602 0.8076201
2 0.21665396 0.2540735 0.6269772 0.0009961955 0.8641968 0.8014775 0.6408617
patient 15 patient 16 patient 17 patient 18 patient 19 patient 20 patient 21
1 0.03178842 0.70620702 0.7614409 0.5516146 0.05971609 0.3702968 0.90079876
2 0.27334311 0.03484481 0.4803889 0.4838688 0.52853695 0.5037140 0.03115113
patient 22 patient 23 patient 24 patient 25 patient 26 patient 27 patient 28
1 0.8249698 0.2767941 0.5306544 0.9688781 0.5995393 0.3427149 0.2921866
2 0.2949440 0.2681442 0.8809229 0.3602453 0.3122242 0.9680564 0.6417741
patient 29 patient 30 patient 31 patient 32 patient 33 patient 34 patient 35
1 0.1217374 0.5721696 0.8807429 0.09401768 0.3994375 0.5825191 0.073809400
2 0.5270218 0.1007655 0.5142553 0.17269346 0.4051577 0.1968952 0.007899745
patient 36 patient 37 patient 38 patient 39 patient 40 patient 41 patient 42
1 0.2451399 0.8466774 0.4001425 0.8081921 0.6977565 0.3230159 0.4933366
2 0.1184844 0.8383270 0.9715824 0.9436642 0.1118531 0.5044923 0.2659268
patient 43 patient 44 patient 45 patient 46 patient 47 patient 48 patient 49
1 0.5872126 0.8283301 0.4381552 0.5863271 0.06969155 0.1848659 0.91026236
2 0.9452248 0.6210323 0.5066544 0.5289093 0.71125154 0.6000685 0.05133945
patient 50 patient 51 patient 52
1 0.8214441 0.2272655 0.5048466
2 0.7853656 0.1296575 0.7862940
给出同样的错误
apply(rawdata, 1, quantile, 0.75)
Error in (1 - h) * qs[i] : non-numeric argument to binary operator
做:
data.frame(ID=rawdata$ID,value=apply(rawdata[,-1],1,quantile,0.75))
要 select 基于分位数的数据框,您需要始终使用数字列值:
quant <- data.frame(
ID=rawdata$GeneSymbol,
value=apply(rawdata[,-1],1,quantile,0.75)
)
keep <- quant[which(quant$value >= 2),]