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