在R中用分号拆分数据框元素

时间:2016-07-15 08:39:02

标签: r dataframe split

我尝试创建一个函数,使用基本的R替换数据框列中包含分号的元素,这些元素位于列底部的位置。主要目的是将此函数与apply一起使用每当检测到带分号的条目时进行添加。

我的代码的主要问题是它返回完全相同的数据框而没有任何其他值。

> df
rs2480711
rs74832092
rs4648658
rs4648659
rs61763535
rs28733941;rs67677371

>x
"rs28733941;rs67677371"

function(x){
semiCols = length(unlist(strsplit(x, ";")))
elementsRs = unlist(strsplit(x, ";"))
if(semiCols>1){
for(i in 1:semiCols){
df = rbind(df, elementsRs[i])
}}}

我还想知道如何扩展代码,以便根据一个值拆分行,而不改变所有其他值。例如,这个

>df
0  rs61763535             T1
1  rs28733941;rs67677371  T2

将会是这样的

>df2
0  rs61763535             T1
1  rs28733941             T2
1  rs67677371             T2

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这将有效

unlist(strsplit(as.character(df$V1),split = ";"))

再一次,我无法让你正确。但是,也许你正在寻找这个

apply(df,2,function(t) unlist(strsplit(as.character(t),split = ";")))