> v <- c(1, 3, 5)
> v
[1] 1 3 5
> v[2]
[1] 3
> v[2] <- 10
> v
[1] 1 10 5
> length(v)
[1] 2
1] 2
> v <- seq(1, 10)
> v
[1] 1 2 3 4 5 6 7 8 9 10
> v <- rep(1:5, times=3)
> v
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
> x <- c(1, 3, 5)
> y <- c(2, 4, 6)
> x*2
[1] 2 6 10
> x + y
[1] 3 7 11
> x > y
[1] FALSE FALSE FALSE
> x %in% y
[1] FALSE FALSE FALSE
> union(x, y)
[1] 1 3 5 2 4 6
> intersect(x, y)
numeric(0)
> setdiff(x, y)
[1] 1 3 5
> setequal(x, y)
[1] FALSE
> x <- c("S", "M", "L", "M", "L")
> x
[1] "S" "M" "L" "M" "L"
> x.fc <- factor(x)
> x.fc
[1] S M L M L
Levels: L M S
> levels(x.fc)
[1] "L" "M" "S"
> x.or <- ordered(x, levels=c("S","M","L"))
> x.or
[1] S M L M L
Levels: S < M < L
> x <- matrix(1:6, nrow=3, ncol=2)
> x
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
>
> x <- matrix(1:6, nrow=3, ncol=2, byrow=TRUE)
> x
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> x <- rbind(c(1, 2), 3:4, 5:6)
> x
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> x <- cbind(c(1,2),3:4,5:6)
> x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> x + 1
[,1] [,2] [,3]
[1,] 2 4 6
[2,] 3 5 7
> 1/ x
[,1] [,2] [,3]
[1,] 1.0 0.3333333 0.2000000
[2,] 0.5 0.2500000 0.1666667
> dim(x)
[1] 2 3
> nrow(x)
[1] 2
> ncol(x)
[1] 3
> x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> x[, 1]
[1] 1 2
> x[2,]
[1] 2 4 6
> x[1, 2]
[1] 3
> x[1, 1:2]
[1] 1 3
> x[1, c(1,2)]
[1] 1 3
> x[1, 2] <- 10
> x
[,1] [,2] [,3]
[1,] 1 10 5
[2,] 2 4 6
> edit(x)
col1 col2 col3
[1,] 1 10 5
[2,] 2 4 6
> x2 <- edit(x)
> x
[,1] [,2] [,3]
[1,] 1 10 5
[2,] 2 4 6
> x <- list(5:10, "abc", matrix(1:6, nrow=2, ncol=3))
> x
[[1]]
[1] 5 6 7 8 9 10
[[2]]
[1] "abc"
[[3]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> x[1]
[[1]]
[1] 5 6 7 8 9 10
> x[[1]]
[1] 5 6 7 8 9 10
> x[[3]][1, 2]
[1] 3
x <- read.table("sales.txt", header=TRUE, sep=",", na.strings="*")
sum(x$sales), max(x$sales), mean(x$sales),median(x$sales),sd($sales)
mean(x$DISTANCE, na.rm=TRUE), summary(x$sales), summary(x), str(x)
p5.js random()
ランダム関数で座標軸や円の半径を決めていきます。。
/*
*/
var x, y, r;
function setup(){
createCanvas(480, 240);
background(255, 0, 0, 10);
noStroke();
background('skyblue')
}
function draw(){
x = random(width);
y = random(height);
if (random()> 0.9) {
r = random (50, 60);
} else {
r = random(10, 30);
}
fill(255, 255, 255, random(30, 250));
ellipse(x, y, r, r);
}
sin(),cos()
var angle = 0;
var r = 50;
function setup(){
createCanvas(480, 240);
noStroke();
background('skyblue')
slider = createSlider(0, 100, 30)
slider.position(10, 20);
button = createButton("clear!");
button.position(10, 40);
button.mousePressed(function(){
background('skyblue');
});
}
function draw(){
r = slider.value();
push();
translate(width/2, height/2);
x = sin(radians(angle)) * r;
y = cos(radians(angle)) * r;
ellipse(x, y, 10, 10);
pop();
angle += 2;
r += 0.1;
}
p5.js
p5.jsはprocessingのJavaScriptです。CSSの表記をそのまま使用することもできます。
rectMode(coner),rectMode(coners),rectMode(center)などあります。
function setup(){
createCanvas(480, 240);
background(255, 0, 0, 10);
rect(50, 50, 150, 100)
}
function draw(){
}
楕円 ellipse, point, arc, line
var c = color('pink')
fill(c);
stroke(c);
ellipse(width/2, height/2, 100, 100)
text("hello world", 100, 100);
座標軸による操作
function setup(){
createCanvas(480, 240);
background(255, 0, 0, 10);
noStroke();
fill(255, 0, 0, 127);
rect(0, 0, 100, 100);
r = 30;
push();
translate(10, 10);
rotate(radians(r));
scale(1.2, 1.2)
fill(0, 0, 255, 127);
rect(0, 0, 100, 100);
pop();
}
マウスの操作
function draw(){
noStroke();
background('skyblue');
ellipse(mouseX, mouseY, 34, 34);
}
入力による動作
r = 50;
function setup(){
createCanvas(480, 240);
background(255, 0, 0, 10);
}
function draw(){
noStroke();
background('skyblue');
if (keyIsPressed === true){
fill('pink');
} else {
fill('white');
}
ellipse(mouseX,mouseY, r, r)
}
function keyTyped(){
if (key === 'u'){
r += 10;
}
}
Processing
Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts.
プロセッシングはjavaで、主にアーティスト・デザイナー向けです。
processing
size(200, 200); smooth(); background(255); rect(50, 50, 80, 30);

角丸
rect(50, 50, 80, 30, 10);
rectMode()
rectMode(CORNER); rect(50, 50, 30, 30); rectMode(RADIUS); rect(50, 50, 30, 40);
fill(255, 0, 0, 127); rect(50, 50, 30, 40);
枠線
stroke(#ff0000); strokeWeight(3); fill(127); rect(50, 50, 100, 100);
円、線
stroke(#ff0000); fill(#999999); line(50, 50, 100, 100); ellipse(50, 50, 80, 80); arc(50, 50, 80, 80, 0, radians(180));
矢印
stroke(#ff0000); fill(#999999); beginShape(); vertex(100, 20); vertex(120, 100); vertex(100, 80); vertex(80, 100); endShape(CLOSE);
画像の表示
PImage img;
img = loadImage("a.jpg");
image(img,10, 10);
テキスト描画
PFont f;
f = createFont("Helvetica", 16, true);
textFont(f, 12);
fill(#ff0000);
text("hello world", 100, 100);
座標空間の変更
fill(#ff0000, 127); noStroke(); rect(10, 10, 50, 50); fill(#0000ff, 127); noStroke(); pushMatrix(); translate(10, 10); rect(10, 10, 50, 50); popMatrix();
立体
size(200, 200, P3D); smooth(); background(255); lights(); pushMatrix(); translate(50, 50, 0); rotateX(radians(30)); rotateY(radians(40)); rotateZ(radians(10)); box(40); popMatrix();
setup()
void setup(){
size(200, 200, P3D);
smooth();
background(255);
noStroke();
fill(#ff0000);
frameRate(30);
}
int x = 0;
int y = 0;
void draw(){
rect(x, y, 100, 100);
x++;
y++;
println(frameCount);
}
マウス情報
int r = 100;
void draw(){
ellipse(mouseX, mouseY, r, r);
}
Perl
[vagrant@localhost ~]$ perl -v This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi Copyright 1987-2009, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
use strict; use warnings; print "hello world\n";
スカラー変数
my $x = 123_234_456
文字列
my $a = "he\tllo\n" #特殊文字、変数展開 my $a = 'hello'
配列
my @sales = (150, 200, 300); print @sales; my @sales = (150, 200, 300); print $sales[1];
ハッシュ変数
my %sales = ("tanaka"=>150, "suzuki"=>200, "yamada"=>300);
print $sales{"tanaka"}
ループ
my $i = 0;
while ($i < 10){
print "i = $i\n";
$i++;
}[/perl]
配列ループ
[prel]
my @colors = qw(red green blue orange pink);
foreach my $color(@colors){
print "color = $color\n";
}[/perl]
ハッシュループ処理
[perl]my %sales = ("tanaka"=>150, "suzuki"=>300, "ohira"=>200);
foreach my $key(keys(%sales)){
print "sales for $key is $sales{$key}\n";
}
ファイルの読み込み
open(my $in, "<", "test.dat") or die("could not open file.");
while(<$in>){
print $_;
}
close($in);
置換
$_ =~ s/abc/ABC;
正規表現
while(<$in>){
$_ =~ s/abc/ABC/;
if ($_ =~ /[a-z]/){
print $_;
}
}
サブルーチン
sub max{
my $max = $_[0];
if ($_[1]> $max){
$max = $_[1];
}
return $max;
}
print max(2, 8);
sublime text3 markdown
sublime text3のコンソールに以下のコードを貼り付け、ctl + shift + pでパッケージコントロールをインストールします。
import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310898eea76'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
# Title 1 ## Title 2 ### Title 3
hr,強調、blockquote,コード、インデント
こんにちは --- こんにちは --- こんにちは **strong** > strong 'var = x' var = x var = 7
リスト、リンク、メール、画像
- item 1 - item 2 - item 3 1. item 1 2. item 2 3. item 3 <http://google.com> <hogehoge@gmail.com> [google][1] [1]:http:/google.com 
なお、マークダウン記法の中にhtmlを書くことも許されています。
github https://github.com/revolunet/sublimetext-markdown-preview
lua
組み込みが容易なスクリプト言語です。
[vagrant@localhost lua]$ lua -v Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio [vagrant@localhost lua]$ lua hello.lua hello world
luaは多重代入も可能です。
x, y = 10, 15 x, y = y, x print(x) print(y)
文字列ではシングル、ダブルクォーテーションどちらも可能です。
s = "h'e'llo" print(s)
配列:luaは1からカウントします。要素の個数は#です。
a = {23, 234, "hello"}
print(a[2])
print(#a)
条件分岐
score = 75
if score > 60 and score < 80 then
print("ok")
else
print("ng!")
end
ループ
i = 0 while i < 10 do print(i) i = i + 1 end
for文
for i = 0, 9, 2 do print(i) end
構文
a = {12, 24, "hey"}
b = {name = "nari", score= 120}
for i, value in ipairs(a) do
print(i, value)
end
関数
function greet(name)
print("hello, I am "..name)
end
greet("clinton")
可変引数
function sum(...)
local a = {...}
local total = 0
for i = 1, #a do
total = total + a[i]
end
return total
end
print(sum(2, 7, 23141, 131))
便利な命令文
math.max(2, 222, 14) math.ceil(2.3) math.floor(2.3) math.random() math.random(n) -- 1からnまでの整数値
文字列の命令文
s = string.len("google")
s = #"google"
s = string.sub("google", 2, 3)
s = string.find("google", "l")
s = string.gsub("google", "e", "er")
s = string.reverse("google")
テーブルの命令文
a = {2, 25, 42, 1}
table.sort(a)
for i, v in inpairs(a) do
print(v)
end
日付データの命令文
x = os.time() x = os.date() print(x)
awk2
条件式
{
print NR ":" $0
if (NR % 5 == 0){
print "--------"
}
}
forループ
{
print("%-12s %5d", $1, $3)
for (i = 0; i < int($3/10); i++){
printf("*")
}
printf("\n")
}
配列
BEGIN{
sales[1] = 200
sales[2] = 120
sales[3] = 50
print sales[3]
color = "yellow red blue"
split(color, colors)
print colors[3]
}
配列
{
sales[$1] += $3
}
END {
for (name in sales){
print name ":" sales[name]
}
}
関数の作り方
function getRate(n){
return int(n / 100) * 0.1
}
{
printf("%-12s %5d rate:%0.1f\n", $1, $3, getRate($3))
}
awk
awkは効率的にテキスト処理を行うことができます。
[vagrant@localhost awk]$ awk --version GNU Awk 3.1.7 Copyright (C) 1989, 1991-2009 Free Software Foundation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 本プログラムは、利用価値があることを期待して配布されていますが、 これは、特定目的に使用可能であること、及び、商用目的に使用できる ことを暗示するものではなく、いかなる保証も一切ありません。 詳しくは、GNU General Public License を参照してください。 You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
{ print $3 }
[vagrant@localhost awk]$ awk -f ex1.awk sales.dat
コマンドラインで、1行で表すこともできます。
awk ‘{print $3}’ sales.dat
行番号の表示
{
print NR ":" $0
}
パターン
NR < 5{
print NR ":" $0
}
NR > 10{
print NR ":" $0
}
FS
BEGIN{
print "--start --"
FS = "-"
}
{
print $1
}
NR < 5{
# print NR ":" $0
}
NR > 10{
# print NR ":" $0
}
END {
print "-- end --"
}
条件
(NR == 5) || (NR > 10){
print NR ":" $0
}
正規表現
$2 ~ /item-[23]/ {
print $0
}
printとprintfの違い
{
printf("%s %d\n", $1, $3)
}
表示を整理
{
printf("%-10s %5d\n", $1, $3)
}
変数
BEGIN{
sum = 0
}
{
sum = sum + $3
}
END{
print sum
}
組み込み関数
{
printf("%f, %d\n", rand(), int($3/3))
}
GnuCOBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-COLORS.
03 MY-COLOR OCCURS 3 PIC X(10).
PROCEDURE DIVISION.
MAIN SECTION.
MOVE "red" TO MY-COLOR(1).
MOVE "yellow" TO MY-COLOR(2).
MOVE "blue" TO MY-COLOR(3).
DISPLAY MY-COLORS.
DISPLAY MY-COLOR(2).
STOP RUN.
[vagrant@localhost cobol]$ cobc -x --free hello.cob [vagrant@localhost cobol]$ ./hello red yellow blue yellow
演算
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-DATA.
03 D1 PIC 99999 VALUE 0.
03 D2 PIC 99999 VALUE 0.
03 D3 PIC 99999 VALUE 0.
03 D4 PIC 99999 VALUE 0.
PROCEDURE DIVISION.
MAIN SECTION.
ADD 5 TO D1 D2 D3.
SUBTRACT 2 FROM D1 D2.
DISPLAY MY-DATA.
STOP RUN.
入力受付
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-DATA PIC X(10).
PROCEDURE DIVISION.
MAIN SECTION.
DISPLAY "whats your name?".
ACCEPT MY-DATA.
DISPLAY "hello! " MY-DATA.
STOP RUN.
条件分岐
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-SCORE PIC 9(3).
PROCEDURE DIVISION.
MAIN SECTION.
MOVE 80 TO MY-SCORE.
If MY-SCORE > 60 THEN
DISPLAY "OK!"
END-IF.
STOP RUN.
条件分岐
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-SIGNAL PIC X(5).
PROCEDURE DIVISION.
MAIN SECTION.
MOVE "red" TO MY-SIGNAL.
EVALUATE MY-SIGNAL
WHEN "red"
DISPLAY "stop!"
WHEN "blue"
DISPLAY "run!"
WHEN "yello"
DISPLAY "caution!"
END-EVALUATE.
STOP RUN.
繰り返し処理
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-COUNTER PIC 9(3) VALUE 1.
PROCEDURE DIVISION.
MAIN SECTION.
PERFORM 10 TIMES
DISPLAY "counter = " MY-COUNTER
ADD 1 TO MY-COUNTER
END-PERFORM.
STOP RUN.
ファイルの書き込み
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OUT-FILE ASSIGN TO 'out.txt'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD OUT-FILE.
01 OUT-FILE-REC PIC 99.
WORKING-STORAGE SECTION.
01 LINE-COUNT PIC 99 VALUE 0.
PROCEDURE DIVISION.
MAIN SECTION.
OPEN OUTPUT OUT-FILE.
PERFORM 10 TIMES
ADD 1 TO LINE-COUNT
MOVE LINE-COUNT TO OUT-FILE-REC
WRITE OUT-FILE-REC
DISPLAY OUT-FILE-REC
END-PERFORM.
CLOSE OUT-FILE.
STOP RUN.
ファイルの読み出し
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN TO 'in.txt'
ORGANIZATION IS LINE SEQUENTIAL
STATUS IN-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 In-FILE-REC PIC X(20).
WORKING-STORAGE SECTION.
01 IN-FILE-STATUS PIC XX.
PROCEDURE DIVISION.
MAIN SECTION.
OPEN INPUT IN-FILE.
PERFORM UNTIL IN-FILE-STATUS NOT = "00"
READ IN-FILE
AT END
DISPLAY "-- end --"
NOT AT END
DISPLAY "Content: " IN-FILE-REC
END-READ
END-PERFORM.
CLOSE IN-FILE.
STOP RUN.