×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
rvlup <- function(x, i, lbl) { # xはラベルとかをくっつけたいベクトル、iはインデックス、lblはラベル。
if(length(i)!=length(lbl))
stop("インデックスとラベルの長さが違います")
lbl2 <- lbl
names(lbl2) <- i
res <- lbl2[x]
names(res) <- NULL
return(res)
}
## 覚書: 条件の変数名をインデックスにする。その上で条件の添え字を元のベクトルで指定する。元のベクトルは当然文字列でないといけない
## stackした後のデータを想定。
tr <- sample(paste("trial", 1:10, sep=""), 20, replace=T)
## それぞれの試行はどんな条件かのインデックス
## サンプルデータ
x1 <- paste("trial", 1:10, sep="")
x2 <- sample(c("high", "low"), 10, replace=T)
## インデックスデータ
(indx <- data.frame(indx=x1, cnd=x2))
## インデックス、条件をそれぞれベクトルにする
indv <- indx[,1]
cndv <- indx[,2]
## 関数rvlupを使う
res <- rvlup(tr, indv, cndv)
res
## 確認
data.frame(tr, res)
indx
## やっぱこっちのほうがわかりやすいかも
trcn <- vector()
for (i in 1:length(tr)) {
x <- tr[i]
xi <- which(indv==x)
res <- as.character(cndv[xi])
trcn[i] <- res
}
data.frame(tr, res)
## match関数を使えばもっと簡単だった...orz
tr
indv
cndv
xi <- match(tr, indv) # trでindvに一致するベクトルの添え字を返す。たとえばtr内の"trial9"はindvの何番目にあるか。これをxiに格納する
cndv[xi] # 条件名ベクトルからxiの添え字に入っているものをとりだす
if(length(i)!=length(lbl))
stop("インデックスとラベルの長さが違います")
lbl2 <- lbl
names(lbl2) <- i
res <- lbl2[x]
names(res) <- NULL
return(res)
}
## 覚書: 条件の変数名をインデックスにする。その上で条件の添え字を元のベクトルで指定する。元のベクトルは当然文字列でないといけない
## stackした後のデータを想定。
tr <- sample(paste("trial", 1:10, sep=""), 20, replace=T)
## それぞれの試行はどんな条件かのインデックス
## サンプルデータ
x1 <- paste("trial", 1:10, sep="")
x2 <- sample(c("high", "low"), 10, replace=T)
## インデックスデータ
(indx <- data.frame(indx=x1, cnd=x2))
## インデックス、条件をそれぞれベクトルにする
indv <- indx[,1]
cndv <- indx[,2]
## 関数rvlupを使う
res <- rvlup(tr, indv, cndv)
res
## 確認
data.frame(tr, res)
indx
## やっぱこっちのほうがわかりやすいかも
trcn <- vector()
for (i in 1:length(tr)) {
x <- tr[i]
xi <- which(indv==x)
res <- as.character(cndv[xi])
trcn[i] <- res
}
data.frame(tr, res)
## match関数を使えばもっと簡単だった...orz
tr
indv
cndv
xi <- match(tr, indv) # trでindvに一致するベクトルの添え字を返す。たとえばtr内の"trial9"はindvの何番目にあるか。これをxiに格納する
cndv[xi] # 条件名ベクトルからxiの添え字に入っているものをとりだす
PR
Comment
Trackback
Trackback URL
Comment form