替换R中大数据帧中的行

时间:2014-05-11 15:23:35

标签: r

我必须根据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,但我知道它很乏味,所以我想使用这种方法但仍无济于事。

1 个答案:

答案 0 :(得分:0)

我不太确定您要尝试做什么,但如果您尝试使用新数据替换某些预先分配的行,则可以这样做:< / p>

Nreplace = length(usSize)
shoes$size[1:Nreplace] <- usSize
shoes$price[1:Nreplace] <- shoesRead$price

等等,其余的列。

这是一些未经请求的建议。查看您已包含的代码,您可以参考ukSizeprice等,而无需参考数据框,这使您看起来已经完成了attach(shoesRead)。绝对从不使用attach()。例如,如果您想要价格向量,只需执行shoesRead$price。为了更易读的代码,它只需要更多的输入。