从字符向量中的名称列表中命名对象

时间:2012-05-03 16:30:17

标签: r reshape2

我有一个字符向量中的文件名列表,我想在Hadley的reshape2包的melt命令中使用这些文件名。字符向量包含具有大量变量和记录的子集化数据帧的名称:

char <- c("b1", "b2", "b3", "b4")

data <- melt(chr[[1]], id.var = 1:5)

这将返回一个包含1个观察值和1个变量b1的数据框。如何让R将字符串视为对象名称以创建数据框?

由于

抱歉缺乏信息。我从.csv文件加载了一个数据集,其中汇总数据包含150条记录和41个变量,然后我创建了4个子集。我想将这些子集放在'for'循环中,并生成一系列从每个子集保存为.pdf文件的图。我在数据中有一个标识组的变量 - grp向量列出了这些组。我想根据子组数据为每个组运行热图:

#### load data
options(stringsAsFactors = F)
df <- read.csv("file.csv")

> dim(df)
[1] 150   41

#### Create subsets
b1 <- df[1:16] 
b2 <- df[c(1:5, 17:27)]
b3 <- df[c(1:5, 28:35)]
b4 <- df[c(1:5, 36:41)]

#### Vector of names for subsets
subs  <- c("b1", "b2", "b3", "b4")

#### Group names
grp <- unique(df$groups)

#### Generate Plots - start pdf device
pdf(file = “file name”,  width = 11, height = 8,
    family = "Helvetica", title = "Heatmap", bg = "white")

#### Group loop
for(g in 1:length(grp)){

   #### Subset loop
   for(i in 1:length(subs)){

      data <- melt(get(subs[[i]]), id.var = 1:5)

      print(ggplot(data, aes(variable, v1)) +
                   geom_tile(aes(fill = value), color = "white") +
                   scale_fill_gradient(low = "white", high = "darkgreen") +
                   theme_bw(base_size = 12) + 
                   labs(x = "",y = "", fill = "Score") + 
                   scale_x_discrete(expand = c(0, 0)) +
                   scale_y_discrete(expand = c(0, 0)) + 
                   opts(axis.ticks = theme_blank(), title =  paste(grp[[g]]) , ": ",
                        subs[[i]])))

    }
}
dev.off()

get命令是将字符串作为对象读取所需的melt,否则sub[[i]]命令返回一个包含1列和1行的数据帧以及子集的名称在牢房里。

谢谢大家的帮助

0 个答案:

没有答案