R语言那些事(二)

文摘   2024-12-08 23:10   新加坡  

缘由

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

碎碎念

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

代码

  1. 如何选择Pvalue最小的10行,作为火山图的标签

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

# 模拟数据
set.seed(123)  # 设置种子,以确保结果可复现
protein <- data.frame(
 ProteinID = paste0("Protein", 1:100),
 Pvalue = runif(100, 0, 0.05),  # 随机生成 100 个 P-value
 FirstName = paste0("Gene", 1:100)
)

protein_sub <- protein %>%arrange(Pvalue)
   %>% mutate(label = ifelse(row_number() <= 10, !!sym(first_name), ""))
  1. 如何将邻接矩阵转换为cytoscape的输入形式

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

# 创建相关性矩阵(假设是一个 4x4 的矩阵)
cor_matrix <- matrix(c(1, 0.8, 0.4, 0.1,
0.8, 1, 0.6, 0.2,
0.4, 0.6, 1, 0.7,
0.1, 0.2, 0.7, 1),
                    nrow = 4, byrow = TRUE)

rownames(cor_matrix) <- colnames(cor_matrix) <- c("A", "B", "C", "D")

# 设置相关性阈值
threshold <- 0.5

#方法一
# 生成一个逻辑矩阵,表示哪些相关性值大于阈值
adj_matrix <- abs(cor_matrix) > threshold

# 找到相关性矩阵中大于阈值的位置 #返回二维索引
edges <- which(adj_matrix == TRUE, arr.ind = TRUE)

# 提取边的 DataFrame,并添加相关性值
edges_df <- data.frame(
   source = rownames(cor_matrix)[edges[, 1]],  # 行(源节点)
   target = colnames(cor_matrix)[edges[, 2]],  # 列(目标节点)
   correlation = mapply(function(x, y) cor_matrix[x, y], edges[, 1], edges[, 2])  # 相关性值
)

#方法二
edges_df  <- reshape2::melt(cor_matrix, varnames = c("source", "target"), value.name = "correlation") %>%
   filter(correlation>threshold)
  1. 如何结合gsub批量列名重命名

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23


# 加载必要的包
library(dplyr)

# 创建一个模拟数据集
set.seed(123)
protein <- data.frame(
 ProteinID = paste0("Protein", 1:5),
 P.Value_1 = c(0.01, 0.05, 0.02, 0.03, 0.004),
 P.Value_2 = c(0.02, 0.04, 0.03, 0.01, 0.005),
 GeneExpression = c(1.5, 2.1, 3.0, 0.8, 2.2),
 P.Value_3 = c(0.03, 0.01, 0.04, 0.02, 0.06)
)

# 查看原始列名
colnames(protein)

# 使用 gsub 批量重命名列名中的 P.Value
protein <- protein %>%
 rename_with(~gsub(pattern = ".*P.Value", replacement = "pvalue", x = ., ignore.case = TRUE))

# 查看修改后的列名
colnames(protein)
  1. 如何提取pathway的数字部分

  • 1

  • 2

pathway<- c("map01250", "map01240", "map01220")
stringr::str_extract(pathway, "\\d+$")
  1. 如何按照 "Group" 列分组,并对每一列进行求和,保持列名不变

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

# 加载必要的包
library(dplyr)

# 创建一个模拟数据框
set.seed(123)  # 设置随机种子
data <- data.frame(
 Group = c("A", "B", "A", "B", "A", "B"),
 Value1 = c(1, 2, 3, 4, 5, 6),
 Value2 = c(7, 8, 9, 10, 11, 12)
)

# 查看原始数据
print(data)

result <- data %>%
 group_by(Group) %>%  # 按 "Group" 列进行分组
 summarise(across(everything(), mean, .names = "{.col}"))  # 按列求和并保留列名

# 查看结果
print(result)


RPython
人生苦短,R和Python。
 最新文章