缘由

生信之路,道阻且长,记录经验,但渡有缘人。

碎碎念

及时当勉励,岁月不饶人 ——陶渊明

代码

  1. 如何过滤以空格分割后元素不足2个的某列?
# 加载dplyr包
library(dplyr)
 
# 创建示例数据框
df <- data.frame(
    id = 1:5,
    value = c("hello world", "singleword", "foo bar baz", "test", "another two words")
)
 
df_filter <- df %>%
    filter(sapply(strsplit(as.character(value), " "), length) >= 2)
  1. 如何批量写表格?
library(purrr)
 
# 创建示例数据框列表
df_list <- list(
  df1 = data.frame(a = 1:3, b = 4:6),
  df2 = data.frame(x = 7:9, y = 10:12),
  df3 = data.frame(p = 13:15, q = 16:18)
)
 
# 定义GO前缀列表
cat_names <- c("bp", "cc", "mf")
 
# 使用pmap批量写入表格文件
pmap(list(df_list, cat_names), function(df, cat_name) {
  write.table(df, paste0(cat_name, ".tsv"), sep = "\t", col.names = TRUE, quote = FALSE, row.names = FALSE)
})
  1. 如何统计多个df差异基因的up和down个数并记录来源?
# 加载必要的包
library(dplyr)
library(purrr)
 
# 创建示例数据框列表
df_list <- list(
    data_frame1 = data.frame(
        gene = c("gene1", "gene2", "gene3", "gene4"),
        regulation = c("up", "down", "up", "down")
    ),
    data_frame2 = data.frame(
        gene = c("gene5", "gene6", "gene7"),
        regulation = c("up", "up", "down")
    ),
    data_frame3 = data.frame(
        gene = c("gene8", "gene9"),
        regulation = c("down", "down")
    )
)
 
# 使用imap_dfr处理数据框列表
result <- imap_dfr(df_list, function(df, name) {
    df %>%
        group_by(regulation) %>%
        summarise(num = n(), .groups = 'drop') %>%
        filter(regulation %in% c("up", "down")) %>%
        mutate(source = name)
})
 
# 打印结果
print(result)
 
  1. 如何将一个单元格中的多个元素拆分成多行?
# 加载必要的包
library(dplyr)
library(tidyr)
 
# 创建示例数据框
df <- data.frame(
    id = 1:2,
    genes = c("gene1;gene2;gene3", "gene4;gene5")
)
 
# 打印原始数据框
print("原始数据框:")
print(df)
 
# 使用separate_rows函数拆分字符串
df_separated <- df %>%
    separate_rows(genes, sep = ";")
 
# 打印拆分后的数据框
print("拆分后的数据框:")
print(df_separated)
  1. 如何在使用mutate时候指定变量的位置?
# 加载dplyr包
library(dplyr)
 
# 创建示例数据框
res20 <- data.frame(
    ID = 1:5,
    Description = c("Item A", "Item B", "Item C", "Item D", "Item E"),
    setSize = c(10, 20, 30, 40, 50)
)
 
# 打印原始数据框
print("原始数据框:")
print(res20)
 
# 使用mutate函数添加新变量,并指定其位置
res20_modified <- res20 %>%
    mutate(set = setSize, .after = Description)
 
# 打印修改后的数据框
print("修改后的数据框:")
print(res20_modified)