我尝试创建一个函数,使用基本的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
答案 0 :(得分:1)
如果我理解正确,这将有效
unlist(strsplit(as.character(df$V1),split = ";"))
再一次,我无法让你正确。但是,也许你正在寻找这个
apply(df,2,function(t) unlist(strsplit(as.character(t),split = ";")))