缘由
生信之路,道阻且长,记录经验,但渡有缘人。
碎碎念
及时当勉励,岁月不饶人 ——陶渊明
代码
- 将行移动到任意位置,常用于热图的调整
library(dplyr)
move_row <- function(data, target_genes, target_position = "first") {
# 检查目标基因是否存在于数据中
if (!all(target_genes %in% data$Gene.name)) {
stop("Some target genes are not present in the data.")
}
# 提取目标行
target_rows <- data %>% filter(Gene.name %in% target_genes)
# 剩余行
other_rows <- data %>% filter(!Gene.name %in% target_genes)
# 判断目标位置
if (target_position == "first") {
# 移动到首行
result <- bind_rows(target_rows, other_rows)
} else if (target_position == "last") {
# 移动到最后一行
result <- bind_rows(other_rows, target_rows)
} else if (is.numeric(target_position) && target_position > 0) {
# 在目标位置前插入目标行
result <- bind_rows(
other_rows[1:(target_position - 1), ], # 目标位置之前的行
target_rows, # 目标行
other_rows[target_position:nrow(other_rows), ] # 目标位置之后的行
)
} else {
stop("Invalid target_position: must be 'first', 'last', or a positive integer.")
}
return(result)
}
# 示例数据
data <- data.frame(
Gene.name = c("GeneA", "GeneB", "GeneC", "GeneD", "GeneE"),
Value1 = c(10, 20, 30, 40, 50),
Value2 = c(5, 15, 25, 35, 45)
)
#将 GeneC 移动到第 2 行
move_row(data, target_genes = "GeneC", target_position = "last")
# 将 GeneC 和 GeneD 移动到首行
move_row(data, target_genes = c("GeneC", "GeneD"), target_position = "first")
# 将 GeneC 移动到最后一行
move_row(data, target_genes = "GeneC", target_position = "last")- 如何将指定列连接在一块
df <- df %>% mutate(mark=str_c(protein_accession, Amino.acid, Position, sep = "_")) - 选择两个列名之间的列
# 选择 A 和 F 之间的列(不包括 A 和 F)
result <- df %>%
select((which(names(df) == "A") + 1):(which(names(df) == "F") - 1))
print(result)
- 如何快速计算dataframe的pvalue值
# 示例数据框
set.seed(123) # 设置随机种子以确保结果可重复
df2 <- data.frame(
Sample1 = rnorm(10, mean = 5, sd = 2), # 处理组样本 1
Sample2 = rnorm(10, mean = 5, sd = 2), # 处理组样本 2
Control1 = rnorm(10, mean = 3, sd = 2), # 对照组样本 1
Control2 = rnorm(10, mean = 3, sd = 2) # 对照组样本 2
)
# 样本组划分
tr_samples <- c("Sample1", "Sample2") # 处理组样本列
ck_samples <- c("Control1", "Control2") # 对照组样本列
# 计算 p 值
p_values <- apply(df2, 1, function(row) {
t.test(row[tr_samples], row[ck_samples])$p.value
})
# 添加 p 值到数据框
df2$p_value <- p_values
- 在R里面如何使用字典进行列名重命名
# 加载需要的库
library(dplyr)
# 模拟 group 文件的 CSV 数据
group <- data.frame(
oldname = c("Age", "Height"),
newname = c("Age_Years", "Height_cm"),
stringsAsFactors = FALSE
)
# 创建一个命名列表,用于列名替换
column_mapping <- setNames(object=group$oldname, nm=group$newname)
# 创建一个数据框(假设 data 是你要重命名列的原始数据框)
data <- data.frame(
Age = c(21, 22, 23),
Height = c(175, 180, 165),
Weight = c(70, 80, 65),
stringsAsFactors = FALSE
)
# 使用 dplyr::rename 和 column_mapping 替换列名
data_renamed <- data %>% dplyr::rename(!!!column_mapping) # 通过 !!! 展开列名映射
# 查看修改后的数据框
print("修改后的数据框:")
print(data_renamed)