gpt4 book ai didi

r - 将变量名称分配给 R 中的输出图

转载 作者:行者123 更新时间:2023-12-01 12:52:51 27 4
gpt4 key购买 nike

我是 R 统计的新用户。我有一个巨大的 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

重要提示:我正在阅读的所有文件都具有完全相同的列名和编号。

我应该使用什么命令来执行此操作?

最佳答案

您可以使用 paste 解决它正如@EDi 指出的,paste0sprintf .我更喜欢后者,因为它具有非常干净的语法。在以下示例中 %i (对于整数)被替换为 i 的值, d1d2%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()
}
}

关于r - 将变量名称分配给 R 中的输出图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398665/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com