我试图找出一种方法来乘非一致数组元素。我认为这是一个简单的任务,但我一直有问题。
我有两张小table:
> table_a
chr1 chr2 chr3
5 5 5
以及
> table_b
chr1 chr2
5 5
我想将这些值按元素相乘,这样输出如下所示:
> table c
chr1 chr2 chr3
25 25 0
使用
table_a * table_b
当两个表具有相同数量的元素时,可以工作,但我需要它来处理具有不同数量元素的文件。
我尝试过将表转换为 Dataframe ,并使用cbind、merge和各种连接,但总是遇到问题。我尝试使用大多数base r或更健壮的库(如dplyr等),但真的试图尽可能简单。任何建议都将不胜感激!
下面是我的代码:
# generating bed data
start1 <- seq(105000, 200000, by=20000)
stop1 <- start1+2000
chrs <- c("chr1", "chr2", "chr3")
x <- sort(rep(chrs, times=5))
df_a <- data.frame(chr=x, start=rep(start1,times=3), stop=rep(stop1,times=3))
start2 <-seq(800000, 920000, by=25000)
stop2 <- start2+2000
df_b <- data.frame(chr=x, start=rep(start2,times=3), stop=rep(stop2, times=3))
# remove a chr from bed
df_b <- df_b[1:10,]
table_a <- table(df_a[,1])
table_b <- table(df_b[,1])
1条答案
按热度按时间pw9qyyiw1#
根据问题table_b名称是table_a名称的子集,因此:
如果我们不能假设table_b名称是table_a的子集,那么使用以下代码: