我想基于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
答案 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.frame
和eval
的{{1}}。