在R中选择基于间隔(子集函数)的矩阵

时间:2014-04-30 15:49:04

标签: r syntax-error subset

我想基于X2列值对一个矩阵进行子集化。我试过了:

on <- subset(mat.num, X2 <= -3)
un <- subset(mat.num, X2 >= -1.50000 & X2 <= -0.3599999)
dn <- subset(mat.num, X2 >= -0.3599998 & X2 <= 0.5)

但是我收到了这个错误:

Error in subset.matrix(mat.num, X2 <= -3) : object 'X2' not found.

ps:我有一个X2列:

mat.num负责人:

     T_EBV     X2
[1,] 0.09 -0.00777840
[2,] 0.26  0.03600431
[3,] 0.20 -0.06191900
[4,] 0.25  0.13423752
[5,] 0.42  0.06354759
[6,] -0.20  0.06303164

1 个答案:

答案 0 :(得分:2)

矩阵方法不会以与数据帧相同的方式引用列名。你可能想要:

subset(mat.num, mat.num[,2] <= -3)

如果您查看subset.matrix的代码,您会发现它没有在任何特殊环境中评估子集标准:

if (missing(subset)) 
        subset <- TRUE
else if (!is.logical(subset)) 
        stop("'subset' must be logical")
x[subset & !is.na(subset), vars, drop = drop]

而不是使用subset.data.frameeval的{​​{1}}。