簡體   English   中英

將變量名稱分配給R中的輸出圖

[英]Assigning variable names to an output graph in R

我是R statistics的新用戶。 我有一個巨大的for循環,多個大型文件,循環最終給我一個圖的結果。

一切正常,除了輸出文件名。 我想要做什么?

我在用

data1 <- read.csv("filepath/filename", header=TRUE, sep=",")
data2 <- read.csv("filepath/filename", header=TRUE, sep=",")
data3 <- read.csv("filepath/filename", header=TRUE, sep=",") 

等等...閱讀我的文件。

我希望輸出圖形文件名包含數據文件的名稱和生成它的列。 例如:

graph1-data1-data3-columnE.pdf

重要說明:我正在閱讀的所有文件都具有完全相同的列名和編號。

我應該用什么命令來做這件事?

您可以使用@EDi指出的pastepaste0sprintf來解決它。 我更喜歡后者,因為它具有非常干凈的語法。 在下面的示例中, %i (對於整數)被替換為id1d2的值,而%s (對於字符串)將替換為col的值。

for(i in 1:n){
    ...
    d1 <- 1    # Index of the first data file
    d2 <- 3    # Index of the second data file
    col <- "E" # Column name
    ...
    outfile <- sprintf("Graph%i-data%i-data%i-column%s.pdf", i, d1, d2, col)
    pdf(outfile)
    ...
    dev.off()
}

一些一般性建議

每當您發現自己創建名為data1data2data3等的對象時,您實際上是偽造了一個對象列表。 改為制作一個正確的列表,您的語法將更緊湊,更易於閱讀和編寫。

# List all files named `data###.csv`, where ### is a number
my.files <- dir(".", "data[0-9]+\\.csv")

# Load all files in one go
my.data <- lapply(my.files, read.csv, header=TRUE, sep=",")

# Calculate the thing you are interested in        
n <- length(my.files)
for(i in 1:n){
    for(j in 1:n){
        # Do stuff
        pdf(sprintf("Graph-%i-%i.pdf", i, j))
        plot(my.data[[i]], my.data[[j]])
        dev.off()
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM