Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据条件删除R中矩阵的行_R_Matrix_Rows - Fatal编程技术网

根据条件删除R中矩阵的行

根据条件删除R中矩阵的行,r,matrix,rows,R,Matrix,Rows,假设在R中有以下矩阵: [,1] [,2] [,3] [,4] [,5] [1,] "A/B" 3 4 5 7 [2,] "A/C" 8 6 7 7 [3,] "A/B/C" 8 8 5 4 删除第一列有两个以上字母的行的最简单方法是什么?我认为理由应该是: if nchar(matrix[,1]!=3) then remove that row 但我不知道如何编写代码。任何帮助都将不胜感激! 谢谢将矩

假设在R中有以下矩阵:

      [,1]   [,2] [,3] [,4] [,5]
[1,]  "A/B"    3    4    5    7
[2,]  "A/C"    8    6    7    7
[3,]  "A/B/C"  8    8    5    4
删除第一列有两个以上字母的行的最简单方法是什么?我认为理由应该是:

if nchar(matrix[,1]!=3) then remove that row
但我不知道如何编写代码。任何帮助都将不胜感激!
谢谢

将矩阵转换为数据帧,然后使用
grepl
检查三个或更多字母的匹配模式:

df <- df[!grepl("\\w/\\w/\\w.*", df$letters),]

df如果矩阵名为
m
,则
m=m[nchar(m[,1])而且,仅供参考,一个矩阵只能有一种数据类型,因此当您同时有字符串和数字时,这是一个非常糟糕的选择。您应该使用一个数据框,它可以在每列中有不同的数据类型。让
mat
作为矩阵的名称。然后只需按“字母”执行
mat[nchar(mat[,1])您是指字符还是字母(即A-Z)?这将保留行并移动所需行。这是您打算执行的操作。
!grepl(…)