R 基于值标准的子集数据帧或矩阵

R 基于值标准的子集数据帧或矩阵,r,matrix,dataframe,subset,R,Matrix,Dataframe,Subset,假设我有一个矩阵或一个数据框,我只想要那些大于15的值,不需要85到90之间的值 a<-matrix(1:100,nrow = 10, ncol = 10) rownames(a) <- LETTERS[1:10] colnames(a) <- LETTERS[1:10] A B C D E F G H I J A 1 11 21 31 41 51 61 71 81 91 B 2 12 22 32 42 52 62 72 82 92 C 3

假设我有一个矩阵或一个数据框,我只想要那些大于15的值,不需要85到90之间的值

a<-matrix(1:100,nrow = 10,  ncol = 10)
rownames(a) <- LETTERS[1:10]
colnames(a) <- LETTERS[1:10]
   A  B  C  D  E  F  G  H  I   J
A  1 11 21 31 41 51 61 71 81  91
B  2 12 22 32 42 52 62 72 82  92
C  3 13 23 33 43 53 63 73 83  93
D  4 14 24 34 44 54 64 74 84  94
E  5 15 25 35 45 55 65 75 85  95
F  6 16 26 36 46 56 66 76 86  96
G  7 17 27 37 47 57 67 77 87  97
H  8 18 28 38 48 58 68 78 88  98
I  9 19 29 39 49 59 69 79 89  99
J 10 20 30 40 50 60 70 80 90 100
在R中是否有任何函数可以接受我的条件并产生期望的结果。我想根据问题更改代码。我在堆栈流上搜索了它,但没有找到类似的内容。我不想基于行或列设置格式。 我试过了 a[a>5&a!=c(85:90)]
但这给了我价值观,也放松了结构

假设“a”是
矩阵
,我们可以将%86:90或
|
小于5(
a<5
)的“a”的值分配给NA。在这里,我没有将其分配给
“”
,因为它将把类从
数值
更改为
字符
。此外,分配给
NA
对于以后的处理也很有用

a[a %in% 86:90 | a<5] <- NA
如果我们使用的是
data.frame

a1 <- as.data.frame(a)
a1[] <- lapply(a1, function(x) replace(x, x %in% 86:90| x <5, ""))
a1
#   A  B  C  D  E  F  G  H  I   J
#A    11 21 31 41 51 61 71 81  91
#B    12 22 32 42 52 62 72 82  92
#C    13 23 33 43 53 63 73 83  93
#D    14 24 34 44 54 64 74 84  94
#E  5 15 25 35 45 55 65 75 85  95
#F  6 16 26 36 46 56 66 76     96
#G  7 17 27 37 47 57 67 77     97
#H  8 18 28 38 48 58 68 78     98
#I  9 19 29 39 49 59 69 79     99
#J 10 20 30 40 50 60 70 80    100

a1假设“a”是
矩阵
,我们可以将%
86:90或
小于5(
a<5
)的“a”的值分配给NA。在这里,我没有将其分配给
“”
,因为它将把类从
数值
更改为
字符
。此外,分配给
NA
对于以后的处理也很有用

a[a %in% 86:90 | a<5] <- NA
如果我们使用的是
data.frame

a1 <- as.data.frame(a)
a1[] <- lapply(a1, function(x) replace(x, x %in% 86:90| x <5, ""))
a1
#   A  B  C  D  E  F  G  H  I   J
#A    11 21 31 41 51 61 71 81  91
#B    12 22 32 42 52 62 72 82  92
#C    13 23 33 43 53 63 73 83  93
#D    14 24 34 44 54 64 74 84  94
#E  5 15 25 35 45 55 65 75 85  95
#F  6 16 26 36 46 56 66 76     96
#G  7 17 27 37 47 57 67 77     97
#H  8 18 28 38 48 58 68 78     98
#I  9 19 29 39 49 59 69 79     99
#J 10 20 30 40 50 60 70 80    100

a1,但它将矩阵值的类别更改为character@user110244如果你仔细阅读,我的帖子中已经提到了。
是一个字符。在不转换为“字符”的情况下,在列中混合字符和数字是不可能的。在R中混合空格和整数的任何方式都是不可能的。不,在R中混合空格和整数是不可能的。在R中可以有不同的列类型作为一个数据帧,但不能在一个列中混合使用两种类型。@user110244否,它没有用处。只需使用
NA
,您可以根据需要使用
?is.NA
?complete.cases
等进行子集,但它会将矩阵值的类别更改为character@user110244如果你仔细阅读,我的帖子中已经提到了。
是一个字符。在不转换为“字符”的情况下,在列中混合字符和数字是不可能的。在R中混合空格和整数的任何方式都是不可能的。不,在R中混合空格和整数是不可能的。在R中可以有不同的列类型作为一个数据帧,但不能在一个列中混合使用两种类型。@user110244否,它没有用处。只需使用
NA
,您可以根据需要使用
?is.NA
?complete.cases
等进行子集