使用mailR包发送时出现csv格式问题

时间:2015-12-15 22:17:09

标签: r email csv

我正在从数据框(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)

这个玩具示例似乎正常运行,所以我更加迷失。原因可能是因为代码是从服务器运行的吗? 这里发生了什么?我可以改变吗?这些是我的问题。

1 个答案:

答案 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()函数中,您将收到一个在变量名称中没有点的附件。