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