1

一个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 中的一行。

4

1 回答 1

1

像这样的东西应该可以工作:

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

在这里,我假设向量是这样的 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
于 2013-02-24T06:03:20.780 回答