【发布时间】:2018-11-21 13:43:49
【问题描述】:
我想创建一个循环来重复数据集列表中的代码行。 每个数据集如下所示:
gwas_1
ID p
1 0.0000005
2 0.0123474
...
gwas_2
ID p
1 0.0000055
2 0.5854587
...
所以我想创建一个新列并检查每个数据集中新列中的频率。我以前这样做过
data=gwas_1
data$p_threshold <- ifelse(data$p<0.001, 1, 0)
table (data$p_threshold)
data=gwas_2
data$p_threshold <- ifelse(data$p<0.001, 1, 0)
table (data$p_threshold)
但意识到它可能效率不高。您能否帮我创建一个循环,因为我的循环不起作用(“错误:$ 运算符对原子向量无效”):
list=c("gwas_1, gwas_2, gwas_3")
for (db in list){
db$p_threshold <- ifelse(db$p<0.001, 1, 0)
table (db$p_threshold)
}
【问题讨论】:
-
只需使用
+(data$p<0.001)而不是ifelse(data$p<0.001, 1, 0)会更快 -
只有几个指针:你的向量
list=c("gwas_1, gwas_2, gwas_3")只有一个元素,即字符串"gwas_1, gwas_2, gwas_3",删除引号" . "以在list中包含数据帧。尽量不要使用list作为变量名,因为它是 R 中的保留函数名。最后尽可能使用apply函数而不是for循环
标签: r loops if-statement