金子邦彦研究室プログラミングR のプログラム例R システムでのバイナリファイルの読み出しと書き込み(R システムを使用)

R システムでのバイナリファイルの読み出しと書き込み(R システムを使用)

前準備

R システムのインストール

R システムの CRAN の URL: https://cran.r-project.org/

バイナリファイルの読み出し

バイナリファイルの読み出しは,readBin() 関数を使って簡単に行えます. ここでは,4バイトの浮動小数データが並んだバイナリファイルの例を示す.

バイナリファイル作成用のプログラム

バイナリファイルの作成は writeBin() 関数を使って簡単に行えるのですが,ここでは「他のアプリが作ったバイナリファイルが読み出せるか」を確認したいので,C 言語で バイナリファイルを作成する.

#include<stdio.h>

int write_param(float *total_u_x, float *total_u_y, unsigned short int width, unsigned short int height, char *filename){
    int i,j;
    FILE *fp;
    fp=fopen(filename,"wb");
    if(fp==NULL)return 0;
    fwrite(&width, sizeof(unsigned int), 1, fp);
    fwrite(&height, sizeof(unsigned int), 1, fp);
    for(j=0;j<height;j++){
        fwrite(&total_u_x[j*width+0], sizeof(float), width, fp);
    }
    for(j=0;j<height;j++){
        fwrite(&total_u_y[j*width+0], sizeof(float), width, fp);
    }
    printf("write parameter file.\n");
    fclose(fp);
    return 0;
}

void main(){
    int width=2;
    int height=2;
    float* ux=new float[width*height];
    float* uy=new float[width*height];

    for(int i=0;i<width*height;i++){
        ux[i]=i*0.1;
        uy[i]=i*0.01;
    }
    write_param(ux,uy,width,height,"test.bin");

}

出来たバイナリファイル

出来たファイルは,test.bin

ファイルの中身は次の通り.

[image]

バイナリファイルの読み出し,簡単な計算とグラフ表示の例

conn <- file("C:/R/R-2.8.0/test.bin", "rb")
width <- readBin(conn, what=integer(), n = 1)
height <- readBin(conn, what=integer(), n = 1)
vx <- readBin(conn, what=double(), n = width * height, size = 4)
vy <- readBin(conn, what=double(), n = width * height, size = 4)
close( conn )
vx
vy

【読み出しの例】

[image]

【計算とグラフ表示の例】

[image]

【出来たグラフ】

[image]

バイナリファイルの書き込み

writeBin() 関数を使う.書き込むオブジェクトはベクトルデータである必要があることに注意.