使用R对df中的连续列列进行因子分析

时间:2016-05-20 08:49:35

标签: r factor-analysis

我有10,000列(SNP频率)的df。我需要用非重复向量进行模拟(因子分析)。为了做到这一点,我需要对列的子集进行因子分析,分为10组。例如,cols 1:10,11:20; 21:30。由于手动指定这将需要很长时间,我需要一个简单的脚本来完成它。 我写了这个,但似乎没有用。我无法弄清楚如何告诉R何时开始和停止每次迭代。

ind=seq(1,(ncol(df)-10),by=10)

for (i in ind) { start=i;end=i+9; rez = factanal(df,factors=1, start:end)  }

1 个答案:

答案 0 :(得分:1)

只是一个小指针:

 groups <- seq(from=1, to=10000, by=10)

这可能有助于将列拆分为10个组。然后,对于组的每个元素,您可以添加0:9之类的内容。参见

> 1 + 0:9
 [1]  1  2  3  4  5  6  7  8  9 10

这可用于对数据帧进行子集化。

例如,

for(i in groups){
  your_function( dat[, i + 0:9] )
}

将使用相应的数据执行您的函数。确保正确存储函数的输出。将其包装到lapply调用中可能很有用,如

 lapply(groups, function(x) your_function(dat[, x + 0:9]))

将输出保存在列表中。

虽然这可能是您问题的答案,但是我还要添加我要做的事情,因为我认为从长远来看这可能会对您有所帮助:我会将melt数据帧放入dplyr长格式,创建一个索引,指示10个组作为新变量,然后将该变量用作分组变量并结合group_by() $ curl -X POST 0.0.0.0:5000/puppies Creating A New Puppy $ curl -X POST 0.0.0.0:5000/puppies/ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>404 Not Found</title> <h1>Not Found</h1> <p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p> 个操作进行分组分析。