R:在将记录插入矩阵时避免循环

时间:2012-02-14 13:57:34

标签: r

我有一个零的矩阵m和一个包含我要插入m的记录的数据框df。

# fix seed -------------------------------------------
set.seed(0)    

# create m, matrix of zeros --------------------------
rnames <- seq( 1, 100, 1 )
m <- matrix( 0, length( rnames ), length( letters ),
      dimnames=list( rnames, letters ))

# create df of random records ------------------------
r <- sample( rnames, 10, replace=TRUE )
c <- sample( letters, 10, replace=TRUE )
q <- runif( 10, -10, 10 )
df <- data.frame( r, c, q )

# want to insert df$q at r,c in m --------------------

我可以不借助循环这样做吗?什么是最干净的方法?

1 个答案:

答案 0 :(得分:5)

将索引矩阵传递给m

index <- cbind(
    row = df$r,
    col = match(df$c, colnames(m))       
)

m[index] <- df$q