矩阵取子集返回向量而非矩阵,如何修改代码保留矩阵格式?
解决矩阵取子集后变成向量的问题
你的原代码问题在于id[,]会把矩阵直接展平成一维向量,之后用%in%筛选出的是单个匹配元素,最终结果自然是向量而非保留整行的矩阵。根据你“保留包含1、3、5值的行”的需求,分两种场景给出修正代码:
场景1:保留至少有一个元素是1/3/5的行
用apply逐行检查是否存在匹配值,同时加上drop = FALSE强制保留矩阵格式(避免结果仅一行时自动转向量):
id13 <- id[apply(id, 1, function(row) any(row %in% c(1, 3, 5))), , drop = FALSE]
场景2:保留所有元素都是1/3/5的行
如果需求是行内所有元素都属于1/3/5,把any换成all即可:
id13 <- id[apply(id, 1, function(row) all(row %in% c(1, 3, 5))), , drop = FALSE]
内容的提问来源于stack exchange,提问作者Nader Mehri
相关产品推荐
相关产品推荐

