Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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 - Fatal编程技术网

R 使用列名列表从矩阵中删除列

R 使用列名列表从矩阵中删除列,r,R,我正在尝试删除所有的colSums=“我的矩阵”中的0列。使用我已经接近了 data2<-subset(data, Gear == 20) #subset off larger data matrix i <- (colSums(data2[,3:277], na.rm=T) != 0) #column selection in this line limits to numeric columns only data3<- data2[, i] #select onl

我正在尝试删除所有的
colSums=“我的矩阵”中的0列。使用我已经接近了

data2<-subset(data, Gear == 20) #subset off larger data matrix
 i <- (colSums(data2[,3:277], na.rm=T) != 0) #column selection in this line limits to numeric columns only 
 data3<- data2[, i]  #select only columns with non-zero colSums

它在这里工作得很好,所以我不确定它为什么不能在实际数据上工作

我们可以从
colSums
中获取列名,并将其与前两个列名连接起来,这两个列名不用于创建使用
colSums
选择感兴趣列的条件

data[c(names(data)[1:2], names(which(i1)))]

如果包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么就更容易帮助您。我看到的唯一真正的问题是更改变量名。检查
data2
中的列和,然后在最后一行中对
n20
进行子集设置。这些可能是完全不同的数据。框架您可以使用
n20[,c(1:2,其中(i)+2)]
@MrFlick您在数据框架引用方面是正确的。这是一个编辑上的错误,把它带到了R的问题上。我还用虚拟数据做了一个可复制的例子,这条线在虚拟数据上运行得非常好。。。吼叫声另外:我根据你的评论更新了原始帖子。原始帖子很好地生成了名字向量。这并不是通过这个列表来设置新的矩阵。@Jesse001原始帖子生成了一个逻辑向量。在这里,它是对该逻辑向量进行子集设置,以仅获取存在TRUE的列名values@Jesse001您可以查看似乎完成了此操作的
v1,谢谢。对不起,我最初误解了答案。
data[c(names(data)[1:2], names(which(i1)))]