我的问题
我有
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"
因为该列是一个因子 - 它是一个带有标签的整数,因此它会转换为数字,在您的情况下为 1。我们需要转换为字符:
varValue1 <- as.character(subset(melttmp, value==1)$variable)
output <- c("varD", varValue1)
output
# [1] "varD" "varA"