ハムスターに飼われる院生のブログ

自分用メモが中心のブログです。

2018-01-01から1年間の記事一覧

特定の数値が出現するまでRでデータを読み込む

R

タブ区切りのデータについて。 データが何行あるかわからない場合を考える。 *----------------------* 1 10 100 2 20 200 5 50 500 10 100 1000 *----------------------*このようなtxtファイルがあるとする。 read.table()で読み込むと *-----------------…

C++で複数行のデータを読み込んでひとつのベクトルに格納する

C++

改行を含むコンマ区切りのデータを一つのvectorに格納する場合。 fileの内容は以下の通りでintが6つである。 1,10,100, 2,20,200,#include <iostream> #include <string> #include <fstream> #include <sstream> using namespace std; class InputManager { private: public: void Get_TxtData(st</sstream></fstream></string></iostream>…

オブジェクトポインタを使用してクラスを切り替える

C++

OperationManagerを基本クラスとし、それに追加機能をつけるクラスAdditionalManagerを考える。 存在するクラスは以下の2つ。 ・OperationManager ・AdditionalManager(これはOperationManagerを継承している)この時両クラスには同名の関数virtual void fun…

コマンドライン引数をまとめて処理する関数の作成

C++

コマンドライン引数をまとめてベクトルに入れておけば、メイン関数をすっきりと書くことができる。 main関数では以下の処理を行う。 vector<string> input; for (int i = 1; i < argc; i++) input.push_back(argv[i]); この読み込んだinputを別のクラス内でstoiやsto</string>…

複数のクラスで同じインスタンスを使用する

C++

複数のクラスで共通のインスタンスを使用する方法 特にメルセンヌツイスターを使用している時によく使うので、メルセンヌツイスターを例に以下にコードを残す。 メイン関数とクラス(Class1)で共通のインスタンスを使用する例。main.cpp #include <iostream> #include "</iostream>…

除算時の丸め込み回避

C++

C++ にて、 int a=30; double y=1/a; cout<

直下のフォルダ内の特定のテキストを全て読み込むスクリプト

【フォルダの構成】 計算条件ごとにフォルダ分けした状態でそれぞれのフォルダにoutput1.txt~output10.txtまでが入っている状態 pathとしてフォルダ名を毎回入力する手間を省く目的で作成 for(j in 1:length(list.files())){ filepath<-list.files()[j] as.c…

下の階層のディレクトリで該当名のものをすべて削除するバッチファイル

@echo off @setlocal enabledelayedexpansion rem rem 以下の階層にあるTestFolderをすべて削除するバッチファイル rem For /r %%d In (TestFolder) Do Rmdir /s /q "%%d" tree /f pause exit コマンドプロンプトに直接入力する場合は For /r %d In (TestFol…

VisualStudio2017でGoogleTestを実行できるようにする

C++

VisualStudio2017でGoogleTestを実行するための環境設定について かなり手間取ったので結論を覚え書きしておく GoogleTestをダウンロードする ~/googletest/msvc/2010/gtest.slnを開き、ビルドする(出てきた選択肢にはOK) GoogleTestを導入したいプロジェ…

mapのキーにvectorを用いた場合のmapの挙動確認

C++

mapのkeyとしてvectorを用いた場合、vectorの0番目の要素の大きさでソートされることを確認した。 確認した際のサンプルコードは以下の通り。 int main() { map<vector<double>, int> test; vector<double> vec1; vec1.push_back(10.0); vec1.push_back(100); vector<double> vec2; vec2.pus</double></double></vector<double>…

フォルダ内にあるインプットファイル全てから計算条件を読み込んで実行するバッチファイル

定時デバッグ用に作成したバッチファイルを以下に示す。 以下の記事で示したバッチファイルの亜種となっている。 chicagopile1-75.hatenablog.com【実行時の状況】 ・test.exeは引数を2つとる実行ファイル ・インプットファイル全てはinput*.txtという名称で…

実行日をフォルダ名に持つフォルダ内に結果を出力させるbatファイル

表題の通りのbatファイルを作った。 基本的には以下の記事の亜種のbatファイルとなっている。 chicagopile1-75.hatenablog.com 【実行時の状況】 ・test.exeという実行ファイルは引数を2つとり、計算結果を標準出力してくる。 ・input.txtというファイル内に…

デバッグ時によく使う自作関数

C++の話。 EigenのVectorXdとMatrixXdをよく利用する。 格納されている中身を確認する際に 毎回for文をまわすことが面倒に感じる。 したがって、以下の関数を作成した。 void cout_eig(MatrixXd mat) { for (int i = 0; i < mat.rows(); i++) { for (int j =…

multimapの使い方

C++

以前、以下のリンクの記事にてmapの使用法を示した。 chicagopile1-75.hatenablog.commapでは、キーの値が重複した場合、値を複数保持できないという仕様になっている。 例えば、以下のような状態である。 int main(){ map<int, int> test; test.insert(std::make_pair</int,>…

シングルクリックでファイルを開く

マウスの使いすぎで右手を傷めたため、 ダブルクリックではなくシングルクリックでファイルを開くことができるよう設定した。 タイムロスの削減にもなればと思う。設定方法は以下の通り(windows7の場合)。・コントロールパネル→デスクトップのカスタマイズ→…

指数表記とsubset()の相性

R

Rで検定を行い、p値が0.05以下の行を抜き出す処理をしたときの話。 p値(result[,1]に格納されている)が指数表記のものについて、 subset(result,result[,1]<0.05) としたところ、指数表記の行が取り出せていなかった。 これに対応するため options(scipen=10…

Rのパッケージに関するエラー対応

R

DTというパッケージを使用しようとして library("DT") としたものの、 ’DT’という名前のパッケージはありません と言われてしまった。そのときは install.packages("DT") を実行することで解決した。 DT以外のパッケージの使用の場合も同様にすることができ…

複数のファイルから読み込んだ結果を重ねてプロットするスクリプト

Rで頻繁に作図をするという現状、 都度打ち込むよりは多少一般化したスクリプトを作っておいた方が楽そうだという動機を持ったので 以下のようなRスクリプトを作成した。以下に示す。 ここでは複数のファイル(output1.txt~outputN.txt)のうち、1列目のデータ…

スペース区切りで出力してしまったファイルをタブ区切りに直したいとき

表題のような困った状況になったときに。 複数のスペースによってデータを区切って出力してしまったが、タブ区切りのデータに直したい、という時に作成したrubyプログラムを以下に残す。 なお、以下のrubyプログラムの名称はtest.rbとした。 File.foreach(AR…

テキストファイルからコマンドライン引数を指定して実行し、はじめの引数ごとにフォルダ分けして出力するバッチファイル

exefile.exeという実行ファイルが6つのコマンドライン引数をとる状態での話。 このコマンドライン引数を変えて大量に計算したい場合、 インプットファイルの中に引数を記し、そこからコマンドライン引数を読み込んで実行することができる。 このためのバッチ…

業務効率化の小技

IME辞書の単語/用例の登録で以下の変換を登録したところ スムーズになったのでメモ読み:ふぉr 語句: for (int i = 0; i こうすれば、ふぉrと入力して変換するだけで、for文を書くことができる。

バッチファイルで2重ループ

バッチファイルで2重ループを作成する時のメモ。 C++等と同じ要領で2重ループを作成しても動かなかったので、 以下に示すコードで2重ループを作成した。一つ目のループの中でDoCalcを呼び出すことで解決した。 @echo off @setlocal enabledelayedexpansion f…

mapの使用例

C++

map使用の具体例として、最小値のキーに対応する要素を得る関数を以下に示す。 insertを使用するとキーの値に応じて自動でソートされるため便利。 #include <map> #include <iostream> using namespace std; int map_test() { map<int, int> test; map<int, int>::iterator itr=test.begin(); te</int,></int,></iostream></map>…

引数の値を計算結果のファイル名にして計算を実行する

表題の通りのバッチファイルを作成したので書きとめておく。 出力用のファイル名を変えて勝手に出力ファイルを作成できるようにした。コマンドライン引数をとるtest.exeという実行ファイルに 0~5の引数を与えて実行する場合の例を示す。 なお、test.exeは実…

t検定のp値を変数に格納する

R

dataの1列目と2列目についてt検定を行う場合、 t.test(data[,1],data[,2],var.equal=T) このように書くと、結果がコンソール上に表示される。 しかし、検定結果のp値によってその後の処理を変えたい場合など、p値を変数に格納したい場合がある。 その場合は…

引数を変えながら並列に計算を実行するバッチ

5計算ずつ並列にし、計100パターン実行したい場合を考える。以下のようにbatファイルを書くと実行することができる。 まず親バッチを以下に示す。 @echo off @setlocal enabledelayedexpansion for /l %%i in (0,5,100) do ( call son.bat %%i ) pause 子バ…

乱数シードを変えてプログラムを繰り返し実行する

乱数シードを少しずつ変えてプログラムを繰り返し実行する時用のメモ。C++とbatファイルに関する話。メイン関数自体に引数を渡すようし、batファイルで異なる引数を与えることで実現させる。乱数のシードをコマンドラインから与えられるようにするため、main…

連番でないtxtファイルをRで読み込む

R

連番でないtxtファイルをRで読み込むスクリプトの紹介。txtファイルすべてに対して処理を行いたいときに使用する。 連番でファイル名をつけようとしたが失敗したので作成した。 #ファイルをfilesの要素となるように代入 files <- list.files() #filesの何番…

EigenのVectorXiをメンバ変数にする

C++

C++の話。 EigenのVectorをメンバ変数とする場合に 一手間必要だったためメモ。EIGEN_MAKE_ALIGNED_OPERATOR_NEW の一文をpublicに入れる必要があった。MyClassというクラスにて、VectorXi をメンバ変数として使用する場合の例を以下に示す。まずはヘッダフ…

ディレクトリを作成しファイル出力する

今回は、new_folderというディレクトリ中に writing, test と10行書き込むプログラムを示す。 出力ファイル名はoutput.txtとした。 # -*- coding: utf-8 -*- import os def make_dir_and_file(folder_name, filename): folder = folder_name+'/' path = fold…