小编eyt*_*tan的帖子

快速读取非常大的表作为数据帧

我有非常大的表(3000万行),我想加载为R中的数据帧 read.table()有很多方便的功能,但似乎实现中有很多逻辑会减慢速度.在我的情况下,我假设我提前知道列的类型,表不包含任何列标题或行名称,并且没有任何我必须担心的病态字符.

我知道在表格中阅读作为列表使用scan()可能非常快,例如:

datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))
Run Code Online (Sandbox Code Playgroud)

但是我将此转换为数据帧的一些尝试似乎将上述性能降低了6倍:

df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))))
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?或者很可能完全不同的方法来解决问题?

import r dataframe r-faq

489
推荐指数
9
解决办法
19万
查看次数

R中的最大绘图点?

我遇到过一些情况,我想要绘制比我真正应该得到的更多的点数 - 主要是因为当我与人分享我的情节或将它们嵌入文件时,它们占据了太多的空间.在数据帧中随机抽样行非常简单.

如果我想要一个真正的随机样本的点图,很容易说:

ggplot(x,y,data=myDf[sample(1:nrow(myDf),1000),])
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有更有效(理想的罐装)方式来指定绘图点的数量,以便您的实际数据准确地反映在绘图中.所以这是一个例子.假设我正在绘制类似于重尾分布的CCDF之类的东西,例如

ccdf <- function(myList,density=FALSE)
{
  # generates the CCDF of a list or vector
  freqs = table(myList)
  X = rev(as.numeric(names(freqs)))
  Y =cumsum(rev(as.list(freqs)));
  data.frame(x=X,count=Y)
}
qplot(x,count,data=ccdf(rlnorm(10000,3,2.4)),log='xy')
Run Code Online (Sandbox Code Playgroud)

这将产生x和y轴变得越来越密集的图.在这里,为较大的x或y值绘制较少的样本是理想的.

有没有人对处理类似问题有任何提示或建议?

谢谢,-e

plot r

7
推荐指数
3
解决办法
5177
查看次数

标签 统计

r ×2

dataframe ×1

import ×1

plot ×1

r-faq ×1