如何在 R 的 melt 中使用 measure.vars 中的字符串向量?

How to use vector of strings in measure.vars in melt in R?

我有一个 data.csv 文件:

BBBB,  B, OOB 

CCCC,  C, OOC

DDDD,  D, OOD

EEEE,  E, OOE

我得到的第二列是:

df1 <- read.csv(data, header=FALSE,strip.white=TRUE,stringsAsFactors=FALSE)[2].

问题是如何在 melt 函数中将 df1 用作 c("B", "C", "D", "E)" 以将 df1 用作 measure.vars 用于不同的数据集(例如 data2,其中 headers 作为 B、C、D、E)。

B,C,D,E

9.43,9.49,9.61,9.04


7.01,3.43,3.63,3.55

10.35,9.05,9.49,8.45

4.83,1.89,1.79,1.94

10.3,10.39,9.67,8.95

我想用作:

df2 = data.frame(melt(data2, measure.vars=df1, variable.name=xxxx, value.name="yyyy"), m="zzzz")

如果我们使用 [ 而没有任何 ,,那么它仍然是具有单列的 data.frame(假设原始数据集是 data.frame)。更好的选择是 [[ 作为向量提取,measure 参数需要 vector。最好用 unique 换行(以防重复)

v1 <- unique(read.csv('file.csv', header=FALSE,strip.white=TRUE,stringsAsFactors=FALSE)[[2]])

现在,我们在 measure

中使用它
library(reshape2)
df2 <- data.frame(melt(data2, measure.vars=v1, variable.name='xxxx', 
         value.name="yyyy"), m="zzzz")