1. ホーム
  2. r

[解決済み] "Error in (1 - h) * qs[i] : non-numeric argument to binary operator" 私のコードを実行しようとするたびにこれが表示され続けるのです。

2022-02-26 18:34:33

質問

52人の患者からの生データがあり、最初の列にEntrez Gene 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))

分位数に基づいてデータフレーム上で選択するには、常に数値列の値を操作する必要があります。

quant <- data.frame(
ID=rawdata$GeneSymbol,
value=apply(rawdata[,-1],1,quantile,0.75)
) 
keep <- quant[which(quant$value >= 2),]