小编ial*_*alm的帖子

并行读/写文件是个好主意吗?

我有大量数据文件,描述了大量气象站的天气。这些文件每小时一次,并且包含在按日期分隔的文件中。

例如:

20100101.csv
20100102.csv
20100103.csv
.
.
20140228.csv
Run Code Online (Sandbox Code Playgroud)

我需要按站点聚合数据,然后将其写入磁盘。也就是说,对于每个天气文件,我需要提取i站的数据,然后将其写入磁盘。

输出:

station_001.csv
station_002.csv
.
.
station_999.csv
Run Code Online (Sandbox Code Playgroud)

foreach为了加快速度,我决定使用和包并行读取日常文件doMC,并且在按站并行聚合后还将站文件写入磁盘。

更具体地说,我曾经foreach读取文件并使用它们组合它们.combine="rbind"(我有足够的内存来在内存中生成一个巨大的数据集)。之后,我有另一个foreach循环,我按站对数据进行子集化,然后写入磁盘。我发现通过并行读/写,我体验到了非常好的速度提升。

我的问题是:并行读/写是个好主意吗?我确保不同的线程不会读取相同的数据文件或写入相同的站文件,但经过一番谷歌搜索后,似乎并行化 i/o 任务可能不是一个好主意?(例如,我发现对并行输入/输出说不,并且R-bloggers 上的一篇文章显示了并行读取

parallel-processing foreach r

4
推荐指数
1
解决办法
5111
查看次数

用R中的data.table查找和替换值?

在阅读了关于R方法的基准测试和速度比较之后,我正在转换到data.table我的大型数据集上的数据操作的快速包.

我遇到一个特定的任务有问题:

对于某个观测变量,我想检查每个站是否存在绝对滞后差(滞后1)大于某个阈值.如果是,我想替换它NA,否则什么也不做.

我可以data.table使用该set命令完成整个操作,但我需要通过工作站执行此操作.

例:

# Example data. Assume the columns are ordered by date.
set.seed(1)
DT <- data.table(station=sample.int(n=3, size=1e6, replace=TRUE), 
                 wind=rgamma(n=1e6, shape=1.5, rate=1/10),
                 other=rnorm(n=1.6),
                 key="station")

# My attempt
max_rate <- 35
set(DT, i=which(c(NA, abs(diff(DT[['wind']]))) > max_rate), 
    j=which(names(DT)=='wind'), value=NA)
# The results
summary(DT)
Run Code Online (Sandbox Code Playgroud)

实施的麻烦在于我需要通过电台来完成这项工作,而且我不希望得到电台1的最后一次读数和电台2的第一次读数之间的滞后差异.

我试图在其中使用by=station运算符[ ],但我不知道该怎么做.

r data.table

3
推荐指数
1
解决办法
6269
查看次数

使用R将多个文件从多个文件夹复制到单个文件夹

嘿,我想问一下如何使用R语言将多个文件从多个文件夹复制到单个文件夹

假设有三个文件夹:

  1. 桌面/文件夹A /任务/子任务/
  2. 桌面/文件夹B /任务/子任务/
  3. 桌面/文件夹C /任务/子任务/

在每个sub_task文件夹中,有多个文件。我想复制sub_task文件夹中的所有文件,然后将其粘贴到桌面上的新文件夹中(将该新文件夹命名为“ all_sub_task”)。谁能告诉我如何使用循环或套用功能在R中执行此操作?提前致谢。

r file-manipulation

3
推荐指数
1
解决办法
2360
查看次数

如何设置晶格图的最大值和最小值?

我正在使用rasterVis软件包绘制栅格图,该软件包使用晶格生成图形。我正在为某些数据绘制级别图,该图会根据输入数据集的值自动选择颜色方案。

例如,假设我的数据采用(x,y,z)的形式,其中x是数据点的水平位置,y是垂直位置,z表示高程。如果使用数据创建水平图,则数据的颜色取决于z。默认情况下,点阵使用z的范围来选择绘图的配色方案。但是,为了使我的绘图与其他数据集可比,我想手动设置颜色的极限。

另一个示例:这是rasterVis网站上的图片: 光栅图像

默认情况下,最暗的红色是数据中最低的z值,最暗的蓝色是数据中最高的z值。有没有办法将颜色方案的限制手动设置为其他值,例如c(-3000,3000)?

r lattice

1
推荐指数
1
解决办法
2588
查看次数