如何对熔化对象进行子集化

问题描述 投票:0回答:1

我的问题

我有

melt
库中的
reshape2
对象。

我想用

value==1
对变量进行子集化。

但是,当我从子集熔化对象中选择值时,我得到的是 id 而不是变量。

如何获得一个向量,最终得到输出向量==

[1] "varD" "varA"

可重现的示例

### Import library
library(reshape2)

### Initiating dataframe
dftmp <- data.frame(id=1:3,
                    varA=1:3,
                    varB=4:6,
                    varC=7:9)

### Melt dataframe
melttmp <- melt(dftmp, id.vars="id")

### Selecting variable with value==1
varValue1 <- subset(melttmp, value==1)$variable

### Vector of varD and variable with value==1
output <- c("varD", varValue1)
output
[1] "varD" "1" 
r reshape
1个回答
0
投票

因为该列是一个因子 - 它是一个带有标签的整数,因此它会转换为数字,在您的情况下为 1。我们需要转换为字符:

varValue1 <- as.character(subset(melttmp, value==1)$variable)

output <- c("varD", varValue1)
output
# [1] "varD" "varA"
© www.soinside.com 2019 - 2024. All rights reserved.