我有一个零的矩阵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 --------------------
我可以不借助循环这样做吗?什么是最干净的方法?
答案 0 :(得分:5)
将索引矩阵传递给m
。
index <- cbind(
row = df$r,
col = match(df$c, colnames(m))
)
m[index] <- df$q