我有一個數據幀,其中一列包含一組名稱。我想stringsplit列名的一部分,並已經這樣做了如下:有條件strsplit
DF$newname <- sapply(strsplit(as.character(DF$oldname), "_"), '[', 5)
在這個例子中分裂的第五部分包含字符串的名稱部分。問題是這個數據集包含$oldname
不同格式的名稱。在第一種格式的名稱如下:其中XXX爲數字:
xxx_xxx_xxx_xxx_name_xx (name is in fifth position)
和第二格式的$oldname
看起來像這樣
xxx_xxx_xxx_xxx_xxx_name_xx (name is in sixth position)
我在想,我可以從內使用ifelse
命令函數,但我遇到了麻煩與下面的代碼一點點:
namesplit = function(df){
x <- strsplit(as.character(df$oldname), "_"), '[', 5)
y <- strsplit(as.character(df$oldname), "_"), '[', 6)
ifelse(is.character(x),x,y) }
DF$newname <- sapply(DF,namesplit)
這個代碼不工作,我知道我可以的使用[
這種方式,但我不知道最好的方法。雖然我認爲我可以在for
循環內工作,但我更願意找到一種方法來提取名稱,以便我可以使用apply
。
謝謝。
謝謝Ramnath。在他的例子中,我簡化了一些名字(他們是從FASTA頭文件中得到的,它們混合了字符和數字數據,當我將這種方法應用到真實數據集時,它並不總是應用真實值。包括一個'ifelse',這樣我就可以擴展這個數據集,可以有另一種格式 – zach
但是....我認爲你是對的,我應該能夠稍微調整一下你的解決方案來得到我需要的 – zach
如果你正在解析FASTA頭文件,請查看這個博客上使用'C'和'R'完成這個工作的代碼 – Ramnath