gpt4 book ai didi

r - 在 R 中写入 txt 时将信息行 append 到 data.frame 的开头

转载 作者:行者123 更新时间:2023-12-02 21:34:10 26 4
gpt4 key购买 nike

我刚刚收到了关于 a previous question 的一些很好的建议关于将文本行 append 到 .txt 输出的开头。这对于我的示例数据效果很好,但我现在意识到我的实际数据有一个 POSIXlt 类的变量,其中包含日期和小时值之间的空格(例如“2001-01-01 10 :00:01”)。这似乎导致 R 无法理解它们有多少数据列。我尝试了对上一个问题给出的两个建议的变体,但似乎没有任何效果。我什至尝试编写为 .csv 文件以更好地定义分隔,但这也失败了。

任何帮助将不胜感激。我可能在这里做了一些非正统的事情吗?我是否应该制作一个单独的“readme.txt”文件来包含变量描述并避免所有这些挫败感?我希望数据集对 future 的用户来说是合乎逻辑且不言自明的。

示例:

###Example dataset
Head <-
"#variables:
#sal - Salinity [PSU]
#temp - Temperature [degrees Celsius]
#datetime - Date [yyyy-mm-dd hh:mm:ss]

"

n <- 10
df <- data.frame(sal=runif(n, 30, 37), temp=runif(n, 15, 17), datetime=as.POSIXlt("2001-01-01 10:00:01"))
df

###Create .txt (or .csv?)
#option 1
fn <- "data.txt"
sink(fn)
cat(Head)
df
sink()
read.table(fn)
#Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
# line 1 did not have 5 elements

#option 2
fn <- "data.txt"
writeLines(Head, fn)
write.table(df, fn, append=TRUE, quote=FALSE)
#Warning message:
#In write.table(df, fn, append = TRUE, quote = FALSE) :
# appending column names to file
read.table(fn)
#Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
# line 1 did not have 5 elements

#option 3
fn <- "data.csv"
sink(fn)
cat(Head)
write.csv(df)
sink()
read.csv(fn, header=TRUE)
#Error in read.table(file = file, header = header, sep = sep, quote = quote, :
# more columns than column names

最佳答案

您可以通过使用逗号(例如)而不是空格来分隔数据列来实现此目的。当然,您需要指定 sep=","两者的论据write.table()read.table() .

(顺便说一句,write.table() 的许多可能参数提供的额外控制是通常更喜欢 write.table(df, ..., append=TRUE) 的原因之一 sink(fn); df; sink() 。与sink() ,data.frame 以与打印到控制台相同的方式写入文件,从而减少了对其表示细节的控制。)

fn <- "data.txt"
writeLines(Head, fn)
write.table(df, fn, append=TRUE, quote=TRUE, sep=",")

## Reading data from the file now works fine
dd <- read.table(fn, header=TRUE, sep=",")
head(dd, 4)
# sal temp datetime
# 1 35.28238 16.48981 2001-01-01 10:00:01
# 2 31.80891 16.68704 2001-01-01 10:00:01
# 3 32.22510 15.87365 2001-01-01 10:00:01
# 4 33.13408 16.60193 2001-01-01 10:00:01

关于r - 在 R 中写入 txt 时将信息行 append 到 data.frame 的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21764361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com