我在R中执行一组分析。分析流程是在数据框中读取(即input_dataframe
),执行一组计算,然后生成一个新的较小的数据框(称为{{ 1}})。对23个不同的文件执行一组精确计算,每个文件都包含一个数据帧。
我的问题如下:对于每个读入的文件(即23个文件)我试图保存一个唯一的R对象:我该怎么做?当我保存结果时final_result
数据帧(使用final_result
到R对象,然后我无法将所有23个对象读入新的R会话而不会让不同的R对象相互覆盖。其他建议(例如Create a variable name with "paste" in R? )对我来说不起作用,因为它们依赖于这样一个事实:一旦分配了新的变量名,你就可以通过它的名称调用那个新变量,在这种情况下我不能这样做。
要汇总/改写:有没有办法在R中保存对象但是更改对象的名称以便稍后加载? 例如:
save()
答案 0 :(得分:0)
x=5
write.csv(x,"one_thing.csv", row.names = F)
x=93
write.csv(x,"two_thing.csv", row.names = F)
result_1 <- read.csv("one_thing.csv")
result_2 <- read.csv("two_thing.csv")
result_1
# x
# 1 5
result_2
# x
# 1 93
答案 1 :(得分:0)
在R
中,通常最好将所有可以看作列表的列表存储为列表。之后它会让一切变得更加优雅。
首先,将所有路径放在列表或向量中:
paths <- c("C:/somewhere/file1.csv",
"C:/somewhere/file2.csv") # etc
然后你读了它们:
objects <- lapply(paths,read.csv) # objects is a list of tables
然后在每个元素上应用转换:
output <- lapply(objects,transformation_function)
然后您可以保存输出(我发现saveRDS
比save
更清晰,因为您知道在加载时您将在工作区中邀请哪些变量:
saveRDS(output,"C:/somewhere/output.RDS")
您将加载
output <- readRDS("C:/somewhere/output.RDS")
或者如果您因某种原因希望保存为不同的对象:
output_paths <- paste0("C:/somewhere/output",seq_along(output),".csv")
Map(saveRDS,output,output_paths)
稍后加载:
output <- lapply(readRDS,paths)