我正在尝试使矩阵形成数据帧,一切都运行良好,但是当我使用 rbind 时,我的一列中的常量数字会发生变化。
我的数据帧如下所示:
CHR POS Fd FdDenom
1 10 3809 0.0000 0.0000
2 10 5673 -0.2500 0.0000
3 10 5847 0.0000 0.5000
...
并被命名为FS_10
比我正在运行下一个 for 循环
table10 <-c()
a <- 0
for(i in 1:round((nrow(Fs_10)/50))) {
window <- Fs_4[a:c(a+50),]
a<- a+50
a1 <- sum(window$FdNum)
a2 <- sum(window$FdDenom)
Result <- a1/a2
start <- window[1,]
end <-window[50,]
middle <- (start[,2]+end[,2])/2
table10 <- rbind(table10,c(window[1,1], start[,2], end[,2], end[,2]-start[,2], middle, Result))
}
我的输出如下所示:
V1 V2 V3 V4 V5 V6
1 2 3869 624096 620287 313952.5 0.029411765
50 2 624096 624694 598 624395.0 0.500000000
100 2 624714 625470 756 625092.0 0.205128205
我希望在 V1 列中有数字 10,但我有 2,我改变了几件事,2 仍然存在而不是 10。你知道发生了什么吗?
该问题的简化版本是:
rbind(c(start[,1], start[,2], end[,2]), c(start[,1], start[,2], end[,2]))
起点是:
CHR POS FdNum FdDenom
240938 10 148990666 0.25 0.25
结尾是:
CHR POS FdNum FdDenom
240987 10 149534407 -0.5 0
我有这个:
[,1] [,2] [,3]
[1,] 2 148990666 149534407
[2,] 2 148990666 149534407
再次是 2 而不是 10
取消此操作:
rbind(list(inicio[,1], inicio[,2], fin[,2]), list(inicio[,1], inicio[,2], fin[,2]))
我有这个:
[,1] [,2] [,3]
[1,] factor,1 148990666 149534407
[2,] factor,1 148990666 149534407
你知道哪个问题出在哪里吗?
谢谢
我是 R 编程的新手,我以为我正在创建一个
矩阵,但 akrun 是对的,我正在创建一个列表。我的解决方案是创建一个数据帧,用以下内容替换我的 for 循环的 las 行:
tabla10 <- rbind(tabla10,data.frame(window[1,c(1,2)], start[,2], end[,2], end[,2]-start[,2], meddle, Result))
但是我仍然不明白为什么 10 变成 2,我会对此进行更多研究。
谢谢