保存数据,代码在一起?

时间:2013-05-21 10:55:16

标签: r

我正在读取SPSS格式的文件(.por),在R中清除它,然后导出为干净的.csv文件。是否可以保存我用于读取/清除/导出数据的代码以将其与数据一起保存?换句话说,我希望能够在稍后加载数据文件,并能够准确地回忆它是如何创建的。

2 个答案:

答案 0 :(得分:4)

只需保存一组文件,一个带有R代码的.R文件,带有SPSS数据的por文件和带有数据的csv文件,所有文件都以同名:

spam.R
spam.por
spam.csv

要传输它们,您可以将这些文件压缩到spam.zip

或者,您可以将R代码添加为数据上方的注释:

# here R code
# Some more code
here the csv data

read.table会自动跳过这些行,因为它们以#read.csv的标准注释字符)开头。

答案 1 :(得分:3)

如果你想从控制台完成所有操作,这是一个黑客攻击:

foo<-attributes(myfunc)$srcref
write.table(as.character(foo),'myfunc.txt')

编辑:回答保罗的问题,这是我的一个“玩具”的输出。每行的元素(每对引号中有一个元素)以制表符分隔。

"x"
"1" "function(x, numdig=3, na.rm=TRUE,printit=TRUE)"
"2" "{"
"3" "   x<-as.vector(x)"
"4" "   if (na.rm)   x <- x[!is.na(x)]"
"5" "   skewx<-theskew(x)"
"6" "   kurtosisx<-thekurt(x)"
"7" "   #allstats<-list(min=min(x), max=max(x), mean=mean(x), median=median(x),sdev=sd(x), skew=theskew(x), kurtosis=thekurt(x))"
"8" "   #looks nicer w/ dataframe rather than pure list"
"9" "   allstats<-data.frame(cbind(min=min(x), max=max(x), mean=mean(x), median=median(x),sdev=sd(x), skew=theskew(x), kurtosis=thekurt(x)),row.names='')"
"10" "  #too long for one line"
"11" "  if(printit)"
"12" "      {"
"13" "      print(format(allstats[1:4],digits=numdig))"
"14" "      print(format(allstats[5:7],digits=numdig))"
"15" "  }"
"16" "  return(invisible(allstats))"
"17" "  }"

我没有试过找到一个控制台hack来将该文本转换回功能代码,但我敢打赌一个简单的gsub('"','',textobject[,2])会起作用。