r - 如何使用 R 制作多个 for 循环以执行不同的功能
问题描述
这是我的极限点,我需要 R 专业人员来帮助我快速循环我的代码。我有一个像这样的df:
GENES <- c('RCD-7','ADF-1','BBF-10','BBF-10','BBF-10','CCF-103')
pos_1 <- c ('T','G','T','A','C','T')
pos_2 <- c ('G','T','A','A','C','G')
df <- data.frame(GENES,pos_1,pos_2)
print(df)
GENES pos_1 pos_2
RCD-7 T G
ADF-1 G T
BBF-10 T A
BBF-10 A A
BBF-10 C C
CCF-103 T G
我对 df 所做的是,我想计算每个位置(即列)中每个核苷酸(比如说字母表)的百分比,并获得第一列中每个基因的每个位置的最大百分比。通过编写单独的代码行,我已经收到了我想要的输出。但是,我的 df 有超过 200 行和列,所以我想避免一次又一次地为不同的位置粘贴相同的代码。
这是我用来计算和获得所需输出的命令行(我只显示两个位置)。
counts1 <- table(df$GENES, df$pos_1)
counts2 <- table(df$GENES, df$pos_2)
#
counts_df1 <- as.data.frame(unclass(counts1))
counts_df2 <- as.data.frame(unclass(counts2))
#
ordered_df1 <- tibble::rownames_to_column(counts_df1, "GENES")
ordered_df2 <- tibble::rownames_to_column(counts_df2, "GENES")
#
colnames(ordered_df1) <- c("GENES", "A1", "T1", "C1","G1")
colnames(ordered_df2) <- c("GENES", "A2", "T2", "C2", "G2")
#
ordered_df1[, c(2:4)] <- sapply(ordered_df1[, c(2:4)], as.numeric)
ordered_df2[, c(2:4)] <- sapply(ordered_df2[, c(2:4)], as.numeric)
#
final_df1 <- cbind(ordered_df1[1], prop.table(as.matrix(ordered_df1[-1]), margin = 1)*100)
final_df2 <- cbind(ordered_df2[1], prop.table(as.matrix(ordered_df2[-1]), margin = 1)*100)
#
row_max_df1 <- final_df1 %>% mutate(pos_1_max=pmax(A1, C1, G1, T1))
row_max_df2 <- final_df2 %>% mutate(pos_2_max=pmax(A2, C2, G2, T2))
#
col_combined1 <- cbind (row_max_df1[,c(1,6)],row_max_df2[,6] )
所需的输出应该是:
GENES pos_1_max pos_2_max
ADF-1 100.00000 100.00000
BBF-10 33.33333 66.66667
CCF-103 100.00000 100.00000
RCD-7 100.00000 100.00000
我什至无法开始为我的代码的前两行编写循环,所以我非常感谢任何帮助。
解决方案
推荐阅读
- android - 需要帮助解析 XML 并进行改造
- python - 无法使用 SQLite 在 Pandas Dataframe 中选择具有空白单元格的行
- javascript - 使用 jQuery/Javascript 从 ID 更新 href
- android - 以编程方式设置 inputType 时,EditText 在某些设备上打开错误的键盘
- neo4j - Neo4j 列表不在另一个列表查询中
- node.js - 使用提交按钮/输入标签将数据插入猫鼬模式
- flutter - Flutter:类型“bool”不是类型转换中“RxBool”类型的子类型
- sql - 如何在 SQLite 中插入多行,部分来自其他表
- wordpress - 用于注册新用户的 Wordpress 自定义端点 API [rest_no_route]
- android - Android Jetpack Navigation Fragment 一次次展示