给出一个数据库
> dat
x y
[1,] "A" "alpha"
[2,] "B" "beta"
[3,] "C" "gamma"
定义d[,2]
中数据的标签(在d[,1]
中指定),我想将标签应用于矢量
z
[1] "A" "A" "A" "B" "B" "C" "C" "C"
到达数据库
z
[1,] "A" "alpha"
[2,] "A" "alpha"
[3,] "A" "alpha"
[4,] "B" "beta"
[5,] "B" "beta"
[6,] "C" "gamma"
[7,] "C" "gamma"
[8,] "C" "gamma"
不幸的是,我的数据库相当大:有没有一种快速的方法可以做到这一点,内置函数在R?
编辑问题的修改版本。
给定数据库("规则"或"标签")
> dat
x y
[1,] 1 "alpha"
[2,] 2 "beta"
[3,] 3 "gamma"
我想将新{3}列中的y
标签应用于数据库
> q
z
[1,] 1 0.1
[2,] 2 0.2
[3,] 3 0.3
[4,] 3 0.4
[5,] 2 0.5
[6,] 1 0.6
[7,] 1 0.7
[8,] 2 0.8
根据q[,1]
中的值,即z
。
答案 0 :(得分:2)
这应该可以满足您的需求:
dat <- as.matrix(data.frame(x=LETTERS[1:3],y=c("alpha","beta","gamma")))
z <- c("A","A","A","B","B","C","C","C")
rownames(dat) <- dat$x
dat[z,]
x y
A "A" "alpha"
A "A" "alpha"
A "A" "alpha"
B "B" "beta"
B "B" "beta"
C "C" "gamma"
C "C" "gamma"
C "C" "gamma"