0

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

4

2 回答 2

4

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

spam.R
spam.por
spam.csv

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

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

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

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

于 2013-05-21T10:57:43.407 回答
3

如果您想从控制台完成所有操作,这里有一个 hack:

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" "  }"

我还没有尝试找到一个控制台黑客来将该文本转换回函数代码,但我敢打赌一个简单的 gsub('"','',textobject[,2])方法会起作用。

于 2013-05-21T11:29:04.637 回答