我正在尝试从原始数字空间分隔的文本文件中创建一个RData文件,即
11 33 55
22 33 45
25 78 00
44 87 99 ....
我有另一个R脚本需要加载这个新的RData文件,并使用mapreduce(rhipe)对数据进行线性回归。因此,当我保存这个RObject时,我需要以这种方式阅读它:
data <- strsplit(unlist(map.values)," ")
#so that I can run regression like:
y<- unlist(lapply(data,"[[",1))
x1<-unlist(lapply(data,"[[",2))
x2<-unlist(lapply(data,"[[",3))
lm(y~x1+x2)
我已经尝试了很多方法将我的数据保存到RData对象中,包括table,list和as.character,但是没有成功,所以我可以使用上面的方法读取它。如何保存原始文件,以便我可以按照上面的方式阅读?谢谢。
(ps。我不能使用load / read.table函数,因为我正在从mapper中的HDFS文件中读取)
答案 0 :(得分:0)
如果我理解正确,你希望你的存储对象是一堆形式为“number - space - number”的字符串。在这种情况下,请使用sprintf
foo <- sprintf('%d %d %d',my_data[1,])
作为创建第一行的示例。运行循环或*apply
来构建整个数组。将该字符串数组保存到RData
文件。这应该至少接近你想要的。
注意:我认为建议改进进行数据排序和回归的远端代码是徒劳的吗?