R 分析和绘制两个不同长度数据帧的通用解决方案?

R 分析和绘制两个不同长度数据帧的通用解决方案?,r,dataframe,matrix,p-value,density-plot,R,Dataframe,Matrix,P Value,Density Plot,你能帮帮我吗 我正在R中编写一个代码,以自动化多个网络的空模型分析。首先,代码将多个TXT矩阵读入R。其次,它计算每个网络的拓扑度量。第三,它使用空模型将每个网络随机化N次。第四,它为原始矩阵的所有随机版本计算相同的拓扑度量 在第五步,也就是最后一步,想法是将观察到的分数与随机分数的分布进行比较。首先,通过简单计算观察得分之上或之下的随机得分数量,以估计P值。其次,将随机得分的分布绘制为密度,并添加一条垂直线以显示观察到的得分 以下是需要分析的数据帧的示例: networks <- pas

你能帮帮我吗

我正在
R
中编写一个代码,以自动化多个网络的空模型分析。首先,代码将多个TXT
矩阵读入R。其次,它计算每个网络的拓扑度量。第三,它使用空模型将每个网络随机化N次。第四,它为原始矩阵的所有随机版本计算相同的拓扑度量

在第五步,也就是最后一步,想法是将观察到的分数与随机分数的分布进行比较。首先,通过简单计算观察得分之上或之下的随机得分数量,以估计P值。其次,将随机得分的分布绘制为密度,并添加一条垂直线以显示观察到的得分

以下是需要分析的
数据帧的示例:

networks <- paste("network", rep(1:3), sep = "")
randomizations <- seq(1:10)

observed.ex <- data.frame(network = networks,
                          observed = runif(3, min = 0, max = 1))

randomized.ex <- data.frame(network = sort(rep(networks, 10)),
                            randomization = rep(randomizations, 3),
                            randomized = rnorm(length(networks)*
                                                   length(randomizations),
                                               mean = 0.5, sd = 0.1))
有没有办法使最终分析更具一般性,这样无论一开始读了多少个网络,它都会进行相同的计算和绘图


多谢各位

看起来这可以整齐地包装在一个迭代每个文件的
lappy
循环中。下面的内容对您有何帮助?您还可以传入文件名而不是文件数(当前为1:3),并在TXT矩阵中“读取”第一行

library(dplyr)#对于%>%,分组依据,并汇总

非常感谢!它工作得很好。我的代码从一开始就将TXT文件读入一个列表,然后再进行随机化,并为观察到的矩阵和随机矩阵计算所选的网络度量。现在我要将尽可能多的调用转换为tidyverse等效调用,这样它运行得更快。然后,我将在GitHub上提供我的代码,以帮助其他人。正如承诺的那样,这里有一个repo,让对相同分析感兴趣的人可以使用这些代码:
randomized.network1 <- subset(randomized.ex, network == "network1")
sum(randomized.network1$randomized >= observed.ex$observed[1]) /
    length(randomized.network1$randomized)
sum(randomized.network1$randomized <= observed.ex$observed[1]) /
    length(randomized.network1$randomized)

randomized.network2 <- subset(randomized.ex, network == "network2")
sum(randomized.network2$randomized >= observed.ex$observed[2]) /
    length(randomized.network2$randomized)
sum(randomized.network2$randomized <= observed.ex$observed[2]) /
    length(randomized.network2$randomized)

randomized.network3 <- subset(randomized.ex, network == "network3")
sum(randomized.network3$randomized >= observed.ex$observed[3]) /
    length(randomized.network3$randomized)
sum(randomized.network3$randomized <= observed.ex$observed[3]) /
    length(randomized.network3$randomized)
ggplot(randomized.ex, aes(randomized)) +
    geom_density() +
    facet_grid(network~.) +
    geom_vline(data=filter(randomized.ex, network == "network1"),
               aes(xintercept = observed.ex$observed[1]), colour = "red") + 
    geom_vline(data=filter(randomized.ex, network == "network2"),
               aes(xintercept = observed.ex$observed[2]), colour = "red") + 
    geom_vline(data=filter(randomized.ex, network == "network3"),
               aes(xintercept = observed.ex$observed[3]), colour = "red")