【发布时间】:2021-01-07 03:26:47
【问题描述】:
我正在处理具有数百万行和四列(即染色体、位置、等位基因 1、等位基因 2)的数据框“df”。现在我想将这些列中的字符连接成一个单独的向量“cc”。这是我的第一次尝试:
myfunc = function(CHR) {
chr = subset(df, df$Chromosome == CHR)
cc = data.frame(No=seq.int(nrow(chr)), pos_al1_al2=NA)
for (i in 1: nrow(chr)) {
cc$pos_al1_al2[i] = paste(CHR, chr$Position[i], ".", chr$Allele1[i], chr$Allele2[i])
cc = cc[, -1] # remove the column 'No'
}
}
# Run my code
myfunc(7)
其中CHR 是我将输入到函数中的我感兴趣的染色体数(例如,1、2、3、...或 22)。当然,CHR 必须在 1 到 22 的范围内,如 'df' 的 Chromosome 列中所示。
我的想法是:我首先创建了一个名为 cc 的空向量,其行数与 data.frame 'df' 相同。
现在我在cc 中创建了一个名为pos_al1_al2 的新列,其每一行都包含您在函数中看到的字符。
计算时间很慢。我猜它来自 for 循环,但我不知道优化我的功能。
任何帮助表示赞赏!提前致谢。
【问题讨论】:
标签: r dataframe for-loop paste