【发布时间】:2018-08-07 09:47:35
【问题描述】:
我尝试编写一个函数来将列分隔到每个数据框中,同时将前四列和每个样本保留在数据框中。以下是示例:
df:
Name RsID Chr Position Sample1 Sample2 Sample3 Sample4 Sample5 Sample6 Sample7
200610-1 rs423874 MT 2755 AA AA AA AA AA AA AA
200610-10 rs94753345 MT 0 AA AA AA AA AA AA AA
200610-100 rs36757 MT 15172 GG GG GG GG GG GG GG
200610-102 rs1444029 MT 125 AA AA AA AA AA AA AA
200610-105 rs3796687 MT 236 AA AA TT AA AA AT AA
200610-107 rs483795 MT 482 TT AA AA TT AA AA AA
desired output:
Name RsID Chr Position Sample1
200610-1 rs423874 MT 2755 AA
200610-10 rs94753345 MT 0 AA
200610-100 rs36757 MT 15172 GG
200610-102 rs1444029 MT 125 AA
200610-105 rs3796687 MT 236 AA
200610-107 rs483795 MT 482 TT
Name RsID Chr Position Sample2
200610-1 rs423874 MT 2755 AA
200610-10 rs94753345 MT 0 AA
200610-100 rs36757 MT 15172 GG
200610-102 rs1444029 MT 125 AA
200610-105 rs3796687 MT 236 AA
200610-107 rs483795 MT 482 AA
...
code:
sep_col <- function(df,i) {if (length(i) <= 1) { x <- cbind(df[1:4],df[i])}
else { x <- list()
for(s in 1:length(i)) {y <- cbind(df[1:4],df[i[s]])
x[[s]] <- list(y)}}
return(x)}
如果我在函数内部写 df[1:4] 会起作用,但是如果我只在函数中改回 df 并运行,则会出现错误:
sep_col(df[1:4],6)
Error:
Error in `[.data.frame`(df, i) : undefined columns selected
Called from: `[.data.frame`(df, i)
我不知道为什么它不正确,但是两个类都是'data.frame',所以任何人都可以建议,谢谢。
【问题讨论】:
-
也许是
lapply(df[,-(1:4)], function(values) cbind(df[,1:4],values))?
标签: r list function for-loop dataframe