合并两个列表组件

jon*_*jon 6 merge r list

我有一个很大的列表,但微观示例如下:

A <- c("A", "a", "A", "a", "A")
B <- c("A", "A", "a", "a", "a")
C <- c(1, 2, 3, 1, 4) 
mylist <- list(A=A, B=B, C= C)
Run Code Online (Sandbox Code Playgroud)

预期输出是将A与B合并,以便每个组件看起来像AB

AA, aA, Aa, aa, Aa
Run Code Online (Sandbox Code Playgroud)

更好的应该排序,大写总是第一

AA, Aa, Aa, aa, Aa
Run Code Online (Sandbox Code Playgroud)

因此,新列表或矩阵应该有两列或多行:

AA, Aa, Aa, aa, Aa
1,   2, 3,   1, 4
Run Code Online (Sandbox Code Playgroud)

现在我想根据类来计算C的平均值 - "AA","Aa"和"aa"

看起来很简单但我无法轻易弄明白.

42-*_*42- 2

> (ab <- paste(A, B, sep="") )
[1] "AA" "aA" "Aa" "aa" "Aa"
> (ab <- paste(A, B, sep="") )  # the joining step
[1] "AA" "aA" "Aa" "aa" "Aa"
> (ab <- sub("([a-z])([A-Z])", "\\2\\1", ab) ) # swap lowercase uppercase
[1] "AA" "Aa" "Aa" "aa" "Aa"

> rbind(ab, C)                  # matrix
   [,1] [,2] [,3] [,4] [,5]
ab "AA" "Aa" "Aa" "aa" "Aa"
C  "1"  "2"  "3"  "1"  "4" 
> data.frame(alleles=ab, count=C)  # dataframes are lists
  alleles count
1      AA     1
2      Aa     2
3      Aa     3
4      aa     1
5      Aa     4
Run Code Online (Sandbox Code Playgroud)