从数据框填充矩阵

时间:2013-09-13 08:53:52

标签: r matrix dataframe

我有一个数据框,其中包含一些数据(声明)和另外两列,包含行和列信息,例如:

Claim row Column

5000 2 10

我有一个包含一些数据和NA的矩阵。我想使用行/列信息用数据帧中的数据替换NA。因此5000将替换目前在第2行第10列的矩阵中的NA。

有没有一种简单的方法可以用R来完成这个?

2 个答案:

答案 0 :(得分:1)

# If you have for example a matrix like this
m <- matrix(c(1:9), ncol=3, nrow=3)

# and information column such as:
info <- rbind(c(5000,2,2), c(8000,1,3))

# you can do like this:
m[info[,c(2:3)]] <- info[,1]

答案 1 :(得分:-1)

我想我已经找到了一种(坏的)方法:循环遍历矩阵中的所有行,选择矩阵中的所有NA元素,并将结果向量分配给数据帧的子集column匹配循环中的当前行,即:

# Fill triangle
new_data <- data.frame(Claim = pred_claims, Column = cols, row = ro) # data frame 
full_triangle <- auto_incr # matrix to be filled

for (i in 2:10) {
  full_triangle[i,is.na(full_triangle[i,])] <- subset(new_data, row==i)$Claim
}