R 用Inf删除矩阵的行
我有三个列表,Inf是数字,NaN是字符变量R 用Inf删除矩阵的行,r,matrix,nan,cbind,R,Matrix,Nan,Cbind,我有三个列表,Inf是数字,NaN是字符变量 v1<-list(1,Inf,3,4,5,6,"NaN") v2<-list(1,"NaN",3,4,5,6,5) v3<-list(1,2,3,4,5,6,"NaN") 背景: 我想将3个列表中的一些结果导出到一个.txt文件中,最简单的方法是使用cbind获取矩阵并使用 write.table(matrix, file="mymatrix.txt", row.names=FALSE, col.names
v1<-list(1,Inf,3,4,5,6,"NaN")
v2<-list(1,"NaN",3,4,5,6,5)
v3<-list(1,2,3,4,5,6,"NaN")
背景:
我想将3个列表中的一些结果导出到一个.txt文件中,最简单的方法是使用cbind获取矩阵并使用
write.table(matrix, file="mymatrix.txt", row.names=FALSE, col.names=FALSE)
关于这个问题的几点建议 1) 最好不要将
矩阵
对象命名为矩阵
2) NaN
或NA
具有特殊含义,不是字符串。通过使用引号“NaN”
,很难应用自定义函数is.NaN/is.na
来执行任何操作。因此,我们必须求助于==/=代码>
3) 不清楚为什么个人列表
被cbind
绑定到矩阵
根据输入数据,我们可以使用apply
循环通过“矩阵”列,然后循环通过每个列表
元素,检查我们是否有有限元素且不是“NaN”,获得行和
,求反(!
-将0元素转换为TRUE,即行中的所有元素都是有限的,所有其他值都转换为FALSE)。使用逻辑索引将行子集化
matrix[!rowSums(apply(matrix, 2, FUN = function(x)
sapply(x, function(y) !(is.finite(y) & y !="NaN")))),]
# v1 v2 v3
#[1,] 1 1 1
#[2,] 3 3 3
#[3,] 4 4 4
#[4,] 6 6 6
关于这个问题的几点建议
1) 最好不要将矩阵
对象命名为矩阵
2) NaN
或NA
具有特殊含义,不是字符串。通过使用引号“NaN”
,很难应用自定义函数is.NaN/is.na
来执行任何操作。因此,我们必须求助于==/=代码>
3) 不清楚为什么个人列表
被cbind
绑定到矩阵
根据输入数据,我们可以使用apply
循环通过“矩阵”列,然后循环通过每个列表
元素,检查我们是否有有限元素且不是“NaN”,获得行和
,求反(!
-将0元素转换为TRUE,即行中的所有元素都是有限的,所有其他值都转换为FALSE)。使用逻辑索引将行子集化
matrix[!rowSums(apply(matrix, 2, FUN = function(x)
sapply(x, function(y) !(is.finite(y) & y !="NaN")))),]
# v1 v2 v3
#[1,] 1 1 1
#[2,] 3 3 3
#[3,] 4 4 4
#[4,] 6 6 6
matrix[应用(矩阵,1,函数(x)all(是有限的(x)),]
当然,这个主题是相关的,但不是重复的,显然应用程序和案例真的不同……在这个网站上有新的东西,但混合现有功能以获得结果的方法是新的,因此感谢您努力报告问题,但您完全错了。matrix[apply(matrix,1,function(x)all(is.finite(x)),]
当然,这个主题是相关的,但它不是重复的,显然应用程序和案例真的不同……在这个网站上有很多新的功能,但是混合现有功能以获得结果的方法是新的,所以感谢您努力报告这个问题,但您完全错了。。
matrix[!rowSums(apply(matrix, 2, FUN = function(x)
sapply(x, function(y) !(is.finite(y) & y !="NaN")))),]
# v1 v2 v3
#[1,] 1 1 1
#[2,] 3 3 3
#[3,] 4 4 4
#[4,] 6 6 6