将RDS文件转换为CSV并返回RDS后的输出将新记录显示为数据,frame

hjzp0vay  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(145)

我的问题源于之前的一次讨论,当时我正在寻找一种解决方案,使用R添加到 *. rds * 文件中。然而,正如在这个线程上详细解释的那样:How to append new rows to .RDS file in Rstudio using write() function这是不可能的。我现在正在尝试一种解决方法,首先将RDS转换为CSV:
RDS文件只有一列X。我将RDS转换为CSV,以便手动添加新记录,然后将CSV转换回RDS格式,这是我需要使用的格式。

    • 第一步:**
> library(foreign)

字符串

    • 步骤2:**我将RDS文件转换为CSV
> for (f in Sys.glob('*.rds')) 
     write.csv(readRDS(f), file = gsub('rds$', 'csv', f))

    • 第三步:**我在CSV文件的底部插入新记录
new_record <- data.frame("D")
write.table(new_record, file = "my_csv_dataframe.csv", append = TRUE, quote = TRUE, col.names = FALSE, row.names = FALSE)

    • 步骤4:**我将CSV文件转换回RDS格式
myrdsobject <- read.csv("my_csv_dataframe.csv", header=TRUE)

    • 第五步:**保存为. rds格式
saveRDS(myrdsobject, "my_rds_dataframe.rds")

    • 第六步:我在Rstudio中运行下面的命令来显示 * my_rds_dataframe. rds *,除了新记录D被写为data. frame**而不是D之外,一切正常。
> my_rds_dataframe <- read.table("my_rds_dataframe.rds", header=TRUE, quote="\"")
>   View(my_rds_dataframe)


例如,将RDS转换为CSV(步骤2)后,输出如下所示:

"x"
"A"
"B"
"C"


当我添加一个记录(步骤3),例如,“D”,结果CSV是:

"x"
"A"
"B"
"C"
"D"


当我在Rstudio中导入RDS文件时(步骤5),输出显示为:

X
A
B
C
data.frame


我需要做什么来在输出中显示记录 * D * 而不是 * data.frame 不幸的是,我无法分享原始RDS文件的实际内容 *。

hivapdat

hivapdat1#

使用csv是毫无意义的额外工作,一旦你从RDS加载了data.frame或matrix对象,你就可以通过使用rbind在其上绑定行来在内存中增长它,然后可以再次写出RDS。

(my_start_data <- data.frame(x=letters[1:3])) 
# ! this could have been loaded from an RDS via readRDS instead of being defined in code

(new_record = "xyz")

(bigger <- rbind(my_start_data,new_record))

saveRDS(object = bigger,
      file = "whatever.RDS")

字符串

相关问题