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)))]