Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.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 用Inf删除矩阵的行_R_Matrix_Nan_Cbind - Fatal编程技术网

R 用Inf删除矩阵的行

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

我有三个列表,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=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