我必须根据R Cookbook手动收集一些行,它建议我为大数据帧预先分配一些内存。说我的代码是
dataSize <- 500000;
shoesRead <- read.csv(file="someShoeCsv.csv", head=TRUE, sep=",");
shoes <- data.frame(size=integer(dataSize), price=double(dataSize),
cost=double(dataSize), retail=double(dataSize));
所以现在,我有一些关于鞋子的数据,我通过csv导入,然后我执行一些计算,并希望插入数据框shoes
。我们假设someShoeCsv.csv
有一个名为ukSize
的列,所以
usSize <- ukSize * 1.05 #for example
我的问题是我该怎么办?运行代码,现在注意到我有usSize
变量从ukSize
列转换而来,从csv文件中读取:
shoes <- rbind(shoes,
data.frame("size"=usSize, "price"=price,
"cost"=cost, "retail"=retail));
添加到已经很大的数据框中。
我已经尝试过list
然后rbind
,但我知道它很乏味,所以我想使用这种方法但仍无济于事。
答案 0 :(得分:0)
我不太确定您要尝试做什么,但如果您尝试使用新数据替换某些预先分配的行,则可以这样做:< / p>
Nreplace = length(usSize)
shoes$size[1:Nreplace] <- usSize
shoes$price[1:Nreplace] <- shoesRead$price
等等,其余的列。
这是一些未经请求的建议。查看您已包含的代码,您可以参考ukSize
和price
等,而无需参考数据框,这使您看起来已经完成了attach(shoesRead)
。绝对从不使用attach()
。例如,如果您想要价格向量,只需执行shoesRead$price
。为了更易读的代码,它只需要更多的输入。