我有以下矩阵:
mat <- matrix(data = c(0.2 , 0.1, 0.2 ,0.4 , 0.1, 0.2, 0.5, 0.3, 0.5), nrow = 3,
ncol=3, byrow = TRUE)
colnames(mat) <- c("x","y","z")
我使用这个过滤器根据列过滤其内容
y
&
z
同时,我只需要一行,所以我选择了第一行。
y
0.2表示
z
mat[ which( mat[,"y"] == 0.1 & mat[,"z"] == 0.2 ), ] [1,]
一切按预期运行并返回:
x y z
0.2 0.1 0.2
另一方面,如果我使用0.3
y
0.5表示
z
mat[ which( mat[,"y"] == 0.3 & mat[,"z"] == 0.5 ), ] [1,]
mat中的错误[其中(mat[,“y”]==0.3和mat[,“z”]==0.5),][1,]:
尺寸数量不正确
这可能是因为第一个过滤返回一个包含两行的矩阵,而第二个过滤不返回矩阵,而只返回一个向量(只有一行的y=0.3,z=0.5)。
如果过滤的返回是一个矩阵(使用[1,])还是一个向量,是否有任何方法可以超越这一点,并且能够在不首先检查的情况下编写一些代码?