为数据帧分配新名称并将其另存为R中的单独对象

时间:2018-02-27 23:10:16

标签: r save

我在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()

2 个答案:

答案 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)

然后您可以保存输出(我发现saveRDSsave更清晰,因为您知道在加载时您将在工作区中邀请哪些变量:

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)