[英]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指出的paste
, paste0
或sprintf
來解決它。 我更喜歡后者,因為它具有非常干凈的語法。 在下面的示例中, %i
(對於整數)被替換為i
, d1
和d2
的值,而%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()
}
每當您發現自己創建名為data1
, data2
, data3
等的對象時,您實際上是偽造了一個對象列表。 改為制作一個正確的列表,您的語法將更緊湊,更易於閱讀和編寫。
# 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.