R 基于值标准的子集数据帧或矩阵
假设我有一个矩阵或一个数据框,我只想要那些大于15的值,不需要85到90之间的值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
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
等进行子集