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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为数据帧分配新名称并将其另存为R中的单独对象相关的知识,希望对你有一定的参考价值。

我在R中执行一组分析。分析的流程是在数据框(即input_dataframe)中读取,执行一组计算,然后生成一个新的,更小的数据框(称为final_result)。对23个不同的文件执行一组精确计算,每个文件包含一个数据帧。

我的问题如下:对于每个读入的文件(即23个文件),我试图保存一个唯一的R对象:我该怎么做?当我保存生成的final_result数据帧(使用save()到R对象时,我无法将所有23个对象读入新的R会话而不会让不同的R对象相互覆盖。其他建议(例如Create a variable name with "paste" in R?)对我不起作用,因为它们依赖于这样一个事实:一旦分配了新的变量名,你就可以通过它的名称调用那个新变量,在这种情况下我不能这样做。

总结/重写:有没有办法在R中保存对象但是更改对象的名称以便以后加载它?例如:

x=5
magicSave(x,file="saved_variable_1.r",to_save_as="result_1")
x=93
magicSave(x,file="saved_variable_2.r",to_save_as="result_2")
load(saved_variable_1)
load(saved_variable_2)
result_1
#returns 5
result_2
#returns 93
答案

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

以上是关于为数据帧分配新名称并将其另存为R中的单独对象的主要内容,如果未能解决你的问题,请参考以下文章

html 导入JSON文件并将其另存为新帖子

html 导入CSV文件并将其另存为新帖子

html 导入JSON文件并将其另存为新帖子

下载 aspx 页面并将其另存为 HTML 页面 [关闭]

Python:如何打开多页 .xlsx 文件(带格式)并编辑一些单元格并将其另存为另一个 .xlsx 文件

ug标准件显示为只读怎么保存