2014-06-23 31 views
0

我想追加一列到我的數據框的末尾。該列應該填寫列表id。但是,當我寫入w <-cbind(w, id)時,它會將整個id打印到數據幀的每個單元中。作爲列插入列表到數據框R

電流輸出:

optOne% optTwo% Neither% TotalCount id 
1 20   1   1   21   A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 
2 17   0   1   21   A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 
3 15   2   4   21   A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 
4 12   0   9   21   A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 
5 18   1   2   21   A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 

期望的輸出:

optOne% optTwo% Neither% TotalCount id 
1 20   1   1   21   A1779TGH2ZMWJ2 
2 17   0   1   21   A18ACKRAVMM8D8 
3 15   2   4   21   A19JXVM2WO1CJ8 
4 12   0   9   21   A1A7O3TW2O0TPM 
5 18   1   2   21   A1AKB300WFZPZ3 
+0

沒有重複的例子,這是很難猜測什麼'id'實際上看起來像。 –

+0

'打印(ID)'返回: '[1] 「A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3」' – guildenstern

+0

這樣看來,'id'是長度爲1的字符向量,而不是一個列表中,也沒有相同的字符向量大小作爲你的數據集。請提供一個可重複的例子。這樣做你可能會找到你的解決方案! – mnel

回答

1

貌似id是一個字符串,所以你將需要strsplit它的第一(其輸出列表)。然後只需添加使用新列$

​​
+0

如果'guildenstem's'數據如下所示,dat $ id < - strsplit(dat $ id,「」)[[1]] – akrun

0

你也可以這樣做:

dat <- read.table(text="optOne%,optTwo%,Neither%,TotalCount,id 
1,20,1,1,21,A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 
2,17,0,1,21,A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 
3,15,2,4,21,A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 
4,12,0,9,21,A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3 
5,18,1,2,21,A1779TGH2ZMWJ2 A18ACKRAVMM8D8 A19JXVM2WO1CJ8 A1A7O3TW2O0TPM A1AKB300WFZPZ3", 
sep=",",header=TRUE,stringsAsFactors=F,check.names=F) 

transform(dat, id=unique(scan(text=id, what="character"))) 
#Read 25 items 
# optOne. optTwo. Neither. TotalCount    id 
#1  20  1  1   21 A1779TGH2ZMWJ2 
#2  17  0  1   21 A18ACKRAVMM8D8 
#3  15  2  4   21 A19JXVM2WO1CJ8 
# 4  12  0  9   21 A1A7O3TW2O0TPM 
#5  18  1  2   21 A1AKB300WFZPZ3