更新R中的data.frame

时间:2013-02-24 05:42:53

标签: r

data.frame“df”

   st1 st2 st3 st4 st5
1  0   0   0   0   0
2  0   0   0   0   0
3  0   0   0   0   0
4  0   0   0   0   0
5  0   0   0   0   0
6  0   0   0   0   0

将根据向量进行更新。向量从某个函数调用返回,每次都可能包含不同数量的列,但向量列始终存在于data.frame“df”中。

for (i in 1:10)
{
  x<-funcall()
  print(x)
  #           time.chosen
  #st3        2
  #st5        4
  // Update data.frame "df"
}

有没有简单的方法在R中进行这种更新?

更新: 让我们假设,对于for循环的第一次迭代,x是

           time.chosen
st3        2
st5        4

然后data.frame df应如下所示

  st1 st2 st3 st4 st5
1  0   0   2   0   4
2  0   0   0   0   0
3  0   0   0   0   0
4  0   0   0   0   0
5  0   0   0   0   0
6  0   0   0   0   0

循环的每次迭代对应于data.frame df。

中的一行

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

      df[iter,rownames(vector)] <- vector$time.chosen

这里我假设vector是一个data.frame,如下所示:

这是一个例子:

vector = data.frame(time.chosen= c(1,2))
rownames(vector) <- paste('t',c(2,3),sep='')
  time.chosen
t2           1
t3           2

df <- as.data.frame(diag(5)*0)
colnames(df) <- paste('t',c(1:5),sep='')


iter <- 1
df[iter,rownames(vector)] <- vector$time.chosen

t1 t2 t3 t4 t5
1  0  1  2  0  0
2  0  0  0  0  0
3  0  0  0  0  0
4  0  0  0  0  0
5  0  0  0  0  0

 iter <-4
 df[iter,rownames(vector)] <- vector$time.chosen

 t1 t2 t3 t4 t5
1  0  1  2  0  0
2  0  0  0  0  0
3  0  0  0  0  0
4  0  1  2  0  0
5  0  0  0  0  0