我的问题源于之前的一次讨论,当时我正在寻找一种解决方案,使用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文件的实际内容 *。
1条答案
按热度按时间hivapdat1#
使用csv是毫无意义的额外工作,一旦你从RDS加载了data.frame或matrix对象,你就可以通过使用rbind在其上绑定行来在内存中增长它,然后可以再次写出RDS。
字符串