【问题标题】:How to write a for loop to parse three different varibles in R?如何编写一个 for 循环来解析 R 中的三个不同变量?
【发布时间】:2019-11-30 13:16:19
【问题描述】:

我很难编写一个 for 循环来解析三个不同的列以进行进一步的绘图。

例如,

我的表格有 3 个不同的列/变量,每个变量有 4 种不同的类型

 colnames    cells         genes       treatment    survival days
    1         a            a2           a3
    2         b            b2           b3
    3         c            c2           c3
    4         d            d2           d3

最后,我想绘制生存曲线,例如:

ggsurvplot(survival days, status)~ cells+genes+treatment, data)

如何使用 for 循环来确保可以绘制所有组合:

1. cells a + gene a2+ treatment a3
2. cells a + gene b2 + treatment a3 
etc.al

它应该有64个组合,所以很多情节。

谢谢。

【问题讨论】:

  • 都是3列组合吗?
  • 是的,只是举例,我的真实数据是 90 行,但仍然是 3 列。所以我需要用这三个 cols 运行每个组合来绘制。

标签: r loops for-loop survival-analysis


【解决方案1】:

试试这个:

cells<-c("a","b","c","d")
genes<-c("a2","b2","c2","d2")
treatment<-c("a3","b3","c3","d3")
mydf<-data.frame(cells=cells,genes=genes,treatment=treatment)
expand.grid(mydf)

预期输出

> tail(expand.grid(mydf))
   cells genes treatment
59     c    c2        d3
60     d    c2        d3
61     a    d2        d3
62     b    d2        d3
63     c    d2        d3
64     d    d2        d3

如果你需要处理重复:

cells<-c("a","b","b","b")
genes<-c("a2","a2","a2","b2")
treatment<-c("a3","c3","c3","c3")
mydf<-data.frame(cells=cells,genes=genes,treatment=treatment)
expand.grid(unique(mydf$cells),unique(mydf$genes),unique(mydf$treatment))

结果:

  Var1 Var2 Var3
1    a   a2   a3
2    b   a2   a3
3    a   b2   a3
4    b   b2   a3
5    a   a2   c3
6    b   a2   c3
7    a   b2   c3
8    b   b2   c3

【讨论】:

  • 如果我的实际数据值重复,我该如何修改。例如,我有 90 行单元格,但只有 4 种不同的单元格类型。
  • 我修改了答案
猜你喜欢
  • 2021-02-17
  • 1970-01-01
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 2012-04-04
相关资源
最近更新 更多