我正在从数据框(df)创建一个csv文件并使用write.csv(df,file="file.csv")
数据框包含其中包含空格的列名(例如“开始日期”)。
这些名称由write.csv
函数正确解析,csv文件包含这些空格。
但是,当我将csv包含在使用sent.mail()
包的attach.files=paste(getwd(),"file.csv",sep="")
函数(带有参数mailR
)发送的邮件中时,空格已经消失并被点替换(例如:开始。收到电子邮件时的日期。
例如:
df=data.frame(c1=c(1,1),c2=c(2,2))
names(df)<-c("c 1","c 2")
write.csv(df,file="file.csv",row.names=F)
send.mail(from = "youremail@gmail.com",
to = "youremail@gmail.com",
subject = "Exemple",
body = "I attached file.csv",
attach.files = paste0(getwd(),"/file.csv"),
smtp = list(host.name = "aspmx.l.google.com", port = 25),
authenticate = FALSE,
send = TRUE)
这个玩具示例似乎正常运行,所以我更加迷失。原因可能是因为代码是从服务器运行的吗? 这里发生了什么?我可以改变吗?这些是我的问题。
答案 0 :(得分:1)
在read.csv
函数中,如果不提供check.names = FALSE
参数,变量名称将被删除空格。
这是我的意思的一个例子:
df <- data.frame(a = rnorm(5))
df[["Start Date"]] <- rep(as.Date(Sys.time()), 5)
write.csv(df, file = "file.csv", row.names = FALSE)
read.csv("file.csv")
a Start.Date
1 -0.3690216 2015-12-15
2 -0.4973525 2015-12-15
3 0.2314902 2015-12-15
4 0.8877708 2015-12-15
5 -0.9476200 2015-12-15
read.csv("file.csv", check.names = FALSE)
a Start Date
1 -0.3690216 2015-12-15
2 -0.4973525 2015-12-15
3 0.2314902 2015-12-15
4 0.8877708 2015-12-15
5 -0.9476200 2015-12-15
现在事实证明,如果您将check.names = FALSE
参数添加到send.mail()
函数中,您将收到一个在变量名称中没有点的附件。