我在以前的帖子中找不到所需的答案,所以我开始一个新的问题。 我试图将多个变量输入到for循环或函数中,以获取通过变量的每一步的单个输出。 我不需要变量的所有排列,我只需要循环或函数就可以并行地(以相同的顺序)对向量的每个元素进行一次操作。 这是我所做的...

a=c("BP GOterms","CC GOterms","MF GOterms")
i = c(0,2,4)
j = c(2,4,6)
n = rep(n,3)

func<-function(a,i,j,n) {
  temp<-arrange(df[df$ID %in% hit[(i*n+1):(n*j)],], -Cluster,Count)
  temp$Description<-factor(temp$Description,levels=unique(temp$Description,fromLast=T))
  plot<-ggplot(temp,aes(Cluster,Description,size=Count,color=p.adjust))+geom_point()+ggtitle(a)
  print(plot)
}

mapply(func,i=i,j=j,n=n,a=a)

这给了我3次正确的输出,我只想要一次

另外,我一直在尝试这样的事情...

for (i in c(0,2,4) & j in c(2,4,6) & title in c("BP GOterms","CC GOterms","MF GOterms")) {
  temp<-arrange(df[df$ID %in% hit[(i*n+1):(n*j)],], -Cluster,Count)
  temp$Description<-factor(temp$Description,levels=unique(temp$Description,fromLast=T))
  plot<-ggplot(temp,aes(Cluster,Description,size=Count,color=p.adjust))+geom_point()+ggtitle(title)
  print(plot)
}

我收到以下错误:

Warning messages:
1: In (i * n + 1):(n * j) :
  numerical expression has 81 elements: only the first used
2: In (i * n + 1):(n * j) :
  numerical expression has 81 elements: only the first used
3: In Ops.factor(Cluster) : ‘-’ not meaningful for factors

要运行我的代码,您将需要非常大的df。 但这是一个看起来像的例子。

structure(list(Cluster = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("M1", 
"M2"), class = "factor"), ONTOLOGY = structure(c(1L, 1L, 1L, 
1L, 1L, 1L), .Label = c("BP", "CC", "MF"), class = "factor"), 
    ID = c("GO:1901673", "GO:0034314", "GO:0006892", "GO:0036503", 
    "GO:0035967", "GO:0006986"), Description = structure(c(1L, 
    2L, 3L, 6L, 7L, 8L), .Label = c("regulation of mitotic spindle assembly", 
    "Arp2/3 complex-mediated actin nucleation", "post-Golgi vesicle-mediated transport", 
    "membrane fusion", "establishment of protein localization to membrane", 
    "ERAD pathway", "cellular response to topologically incorrect protein", 
    "response to unfolded protein", "vacuolar transport", "response to topologically incorrect protein", 
    "cytosolic transport", "endosomal transport", "vacuole organization", 
    "DNA-dependent DNA replication", "macroautophagy", "response to endoplasmic reticulum stress", 
    "Golgi vesicle transport", "rRNA processing", "myeloid leukocyte activation", 
    "rRNA metabolic process", "mitotic nuclear division", "DNA replication", 
    "regulation of mitotic cell cycle phase transition", "regulation of cell cycle phase transition", 
    "ribosome biogenesis", "proteasome-mediated ubiquitin-dependent protein catabolic process", 
    "chromosome segregation", "regulation of chromosome organization", 
    "autophagy", "process utilizing autophagic mechanism", "proteasomal protein catabolic process", 
    "ncRNA processing", "mitotic cell cycle phase transition", 
    "cell cycle phase transition", "regulation of DNA metabolic process", 
    "negative regulation of cell cycle", "ribonucleoprotein complex biogenesis", 
    "DNA repair", "ncRNA metabolic process", "regulation of mitotic cell cycle"
    ), class = "factor"), GeneRatio = c("8/1090", "10/1090", 
    "18/1090", "18/1090", "20/1090", "21/1090"), BgRatio = c("21/19527", 
    "32/19527", "95/19527", "95/19527", "97/19527", "104/19527"
    ), pvalue = c(9.7302693101372e-06, 5.88348341881873e-06, 
    4.47976958483539e-06, 4.47976958483539e-06, 3.24568370146555e-07, 
    2.40596847523017e-07), p.adjust = c(0.00248177711775767, 
    0.00171451628569576, 0.0014795185682183, 0.0014795185682183, 
    0.000229701672243719, 0.000198652797104838), qvalue = c(0.00230759974232573, 
    0.00159418720995361, 0.00137568222478875, 0.00137568222478875, 
    0.000213580629738545, 0.000184710842940477), Count = c(8L, 
    10L, 18L, 18L, 20L, 21L)), row.names = c(NA, 6L), class = "data.frame")

谢谢你的尽心帮助!

  ask by giderk translate from so

本文未有回复,本站智能推荐:

1回复

如何在R函数中进行变量循环

我是R的新手python用户。现在,我正在处理R包GWmodel。 查看基本GWR的功能,如下所示: 我需要的是收集每个变量的估计参数的平均值,并将其添加到任何给定的bw(带宽)值的列表中。 用python术语来说是这样的:
1回复

在R中使用文本变量进行循环

我试图在R中编写一个for循环。但是,我一直坚持在文本参数内替换运行变量。 这是我想做的: 当x取值“ Automatic S(1)”,“ Automatic S(2)”,...,“ Automatic S(9)”时,x应该是变量vehicle $ trans长度的向量。 我该如何解
1回复

R:在函数声明中使用For循环变量

我想在R中创建一个函数列表,其中来自for循环的值存储在函数定义中。 这是一个例子: 在上面的示例中,无论我调用哪个函数, i始终是for循环序列中的最后一个值,我知道这是正确的行为。 我正在寻找可以实现这一目标的东西:
2回复

在r中的函数中使用多个变量

我有这个功能 我需要功能运行像 并获得功能的结果。 因此,问题在于功能要使用在功能运行期间创建的对象。 我需要运行低谷x,y的更多组合,所以我需要这种方式。 任何建议如何实现呢? 谢谢
2回复

使用循环创建变量或在r中应用

我正在尝试基于ifelse函数在R中创建一系列变量: 我从事1970-2007年。 现在,我每年只有一条线。 在stata中,我可以通过以下方式执行此操作: 在R中有类似的简单方法吗? 我知道for循环不好。 也许使用申请? 我实际上要做的是,如果第n年存在一个
1回复

在 R 中使用 For 循环将相同的函数应用于数据框中的多个变量

我正在尝试跨数据框中的多个变量应用函数。 下面是我正在尝试做的一个例子。 我将在一个更大的数据框中的多个变量中应用它,因为我无法让这个循环在我的主数据集中工作,我目前有非常重复的代码,如下所示: 希望循环或应用函数将有助于减少当前代码的重复性。
1回复

使用R在矩阵中进行循环

我必须将54个矩阵放在一个名为A的向量列表中。我希望此列表中的前25个矩阵为零矩阵,除了矩阵的第(i,j)个元素,它应该等于1。 我所有的矩阵都是5x5。 我正在使用for循环,但我不明白如何创建前25个矩阵。 现在我试图用(i:(i-1),j:(j-1))th元素= 1制作16个矩阵
1回复

使用 for 循环在 R 中抓取网页

我想从这个链接中抓取数据,我已经在 R 中编写了以下代码来做到这一点。 但是,这不起作用并且只返回结果的第一页。 显然,循环不起作用。 有人知道循环出了什么问题吗?