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