【问题标题】:How to use a varibale to call a table and a column in R如何使用变量调用R中的表和列
【发布时间】:2021-08-25 22:19:57
【问题描述】:

我正在尝试在 for 循环中使用不同的表来生成绘图。

我正在尝试这样的事情:

table_1 <- read.table("sometable1")
table_2 <- read.table("sometable2")
table_n <- read.table("sometablen")

a=1
for(f in args) {

                L <- sub("#", "", readLines(f))
                df <- read.table(text = L, header = TRUE)
                name <- gsub(".txt", "", f)
                name2 <- paste("table_", a, sep="")           
                jpeg(paste(name, ".jpg", sep=""))
                ggplot(df, aes(x=POS, y=Pperbase)) + geom_point() +  geom_vline(xintercept= name2$start, color = "purple", alpha = .05)
                dev.off()

                a=a + 1
            }

对于每个循环,我想使用两个表,我从标准输入读取的 df 表,并添加垂直线,另一个名为 table_n 的表(其中 n 将采用从 1 到 n 的数字)。因此,在第一个循环中,我想使用 table_1 中的“start”列,第二个循环使用 table_2 中的“start”列,依此类推。为此,我试图在 for 循环中创建表的名称(table_1,table_1 .. table_n),将名称分配给变量,但它不起作用。你能告诉我我是怎么做到的吗?

【问题讨论】:

    标签: r variables


    【解决方案1】:

    解决办法是:

    for(f in args) {
    
                L <- sub("#", "", readLines(f))
                df <- read.table(text = L, header = TRUE)
                name <- gsub(".txt", "", f)
                name2 <- paste("table_", a, sep="")           
                jpeg(paste(name, ".jpg", sep=""))
                print(ggplot(df, aes(x=POS, y=Pperbase)) + geom_point() +   geom_vline(xintercept= eval(as.name(name2))$start, color = "purple", alpha = .05))
                dev.off()
    
                a=a + 1
            }
    

    如果我使用 eval(as.name(variablename)) 我可以使用我的变量作为表名。 此外,我还添加了 print() 来获得图表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多