2016-03-30 23 views
0

内のペアからの値私のデータフレームは、NAいくつか散乱して、このように見える(しかし、285 X 12300である):左rownames後充填データフレーム

 X5f65665a X8c267f9f X169df433 X5742e722 X148d530d X88febf48 
F185 X5f65665a   0 X169df433   0 X148d530d X88febf48 
F186 X5f65665a   0 X169df433   0 X148d530d   0 
M187 X5f65665a X8c267f9f X169df433   0 X148d530d X88febf48 
F188 0   X8c267f9f X169df433   0 X148d530d   0 
M189 X5f65665a X8c267f9f X169df433   0 X148d530d X88febf48 
F190 X5f65665a   0 X169df433   0 X148d530d X88febf48 

、列はペア(COLS 1 & 2であり; 3 & 4等)。私は "0"をそのペアのパートナー値に置き換える必要があります。だから(1,2)はX5f65665aになり、(4,1)はX8c267f9fになるはずです。 (dnatheistへ)

答えて

1
d1 <- read.table(text=" 
    X5f65665a X8c267f9f X169df433 X5742e722 X148d530d X88febf48 
F185 X5f65665a   0 X169df433   0 X148d530d X88febf48 
F186 X5f65665a   0 X169df433   0 X148d530d   0 
M187 X5f65665a X8c267f9f X169df433   0 X148d530d X88febf48 
F188 0   X8c267f9f X169df433   0 X148d530d   0 
M189 X5f65665a X8c267f9f X169df433   0 X148d530d X88febf48 
F190 X5f65665a   0 X169df433   0 X148d530d X88febf48", 
       head=T, as.is=T, row.names=1) 

d1.lst <- lapply(seq(1, ncol(d1), by=2), function(x){return(d1[, x:(x+1)])}) 
d1.lst.fil <- lapply(d1.lst, function(x){ 
    x[,1][x[,1]==0] <- x[,2][x[,1]==0] 
    x[,2][x[,2]==0] <- x[,1][x[,2]==0] 
    return(x) 
}) 

d2 <- do.call(cbind, d1.lst.fil) 
#  X5f65665a X8c267f9f X169df433 X5742e722 X148d530d X88febf48 
# F185 X5f65665a X5f65665a X169df433 X169df433 X148d530d X88febf48 
# F186 X5f65665a X5f65665a X169df433 X169df433 X148d530d X148d530d 
# M187 X5f65665a X8c267f9f X169df433 X169df433 X148d530d X88febf48 
# F188 X8c267f9f X8c267f9f X169df433 X169df433 X148d530d X148d530d 
# M189 X5f65665a X8c267f9f X169df433 X169df433 X148d530d X88febf48 
# F190 X5f65665a X5f65665a X169df433 X169df433 X148d530d X88febf48 

UPDATE:

はisssueは "NA" によって引き起こされます。以下のスクリプトを試してみてください。 「NA」は変更されません。

d1.lst.fil <- lapply(d1.lst, function(x){ 
    x[,1][!is.na(x[,1]) & x[,1]=="0"] <- x[,2][!is.na(x[,1]) & x[,1]=="0"] 
    x[,2][!is.na(x[,2]) & x[,2]=="0"] <- x[,1][!is.na(x[,2]) & x[,2]=="0"] 
    return(x) 
}) 
+0

それは最初の10×10で素晴らしいですが、全体のデータフレームで私が取得:xのエラー[1] [X [1] == 0] < - X [2] [X [1] == 0]: 添字付きの割り当てではNAsは使用できません – dnatheist

+0

再現可能な例を示してください。私はいくつかの提案があります:(1)すべての列が文字か整数かを確認してください。 2] [x [、1] == "0"]およびx [、2] [x [、2] [x [、1] ] == "0"] < - X [1] [X [2] == "0"] –

+0

「D1 < - read.tableを(テキスト=」 X5f65665a X8c267f9f X169df433 X5742e722 X148d530d X88febf48 F185 X5f65665a 0 X169df433 0 X148d530d X88febf48 F186 X5f65665a 0 X169df433 0 X148d530d 0 M187 X5f65665a X8c267f9f X169df433 0 X148d530d X88febf48 F188 0 X8c267f9f NA NA X148d530d 0 M189 X5f65665a X8c267f9f X169df433 0 X148d530d X88febf48 F190 X5f65665a 0 X169df433 0 X148d530d X88febf48" 、 ヘッド= T、 as.is = T、row.names = 1) ' – dnatheist