2017-04-11 892 views
1

我有兩個數據幀,一個是任務的準確度,另一個是響應時間(RT)。我試圖得到正確的試驗RT,而不是所有的試驗。我做了這麼在精度表不正確的試驗顯示爲NA,並試圖做出相應的細胞NA在RT表時,我似乎得到了錯誤:R錯誤:「新列將在現有列之後留下空洞」

Error in `[<-.data.frame`(`*tmp*`, which(is.na(ACC)), value = NA) : new columns would leave holes after existing columns 

的代碼相當簡單 - 我試着用隨機生成的數據,它似乎工作得很好。代碼如下:文件

ACC <- read_excel("PJ_ACC_TABLE.xlsx", sheet = 1) 
RT <- read_excel("PJ_RT_TABLE.xlsx", sheet = 1) 

更改錯誤

公開賽NA

ACC <- ifelse(ACC>0,1,NA) 

變化

RT[which(is.na(ACC))] <- NA 

我ACC表看起來像:

ACC table

雖然我的RT表看起來像:

RT table

我注意到,我改變ACC表後,包括NA的,它變成一個載體。

任何幫助將不勝感激,謝謝!

+0

請重新制作一個例子,因爲我們沒有訪問您的xlsx文件。還要添加你期望的結果。 –

+0

你不需要使用兩個獨立的數據框架,爲什麼不把它們合併然後嘗試你想要的? – Mons2us

+0

我會嘗試添加表格,但遇到一些麻煩。但是我想要的結果是RT表格與ACC表格在相同的單元格(例如,列A行1)中具有NA。 另外,我不確定Mon2us是如何工作的;我試圖讓RT只進行正確的試驗。即使ACC細胞與RT細胞相鄰,我是否能夠做到這一點,只有正確的RT纔是平均值? –

回答

0

你可以這樣索引RTis.na(ACC)。如果RT和ACC具有相同的維度,這個答案將起作用。

#example data 
RT <-data.frame(matrix(1:25,ncol=5)) 
ACC <-data.frame(matrix(rep(1,25),ncol=5)) 
ACC[c(1,3,5),c(2,3,4)] <-NA 

#Put NA in RT where ACC is NA 
RT[is.na(ACC)] <-NA 
RT 

    X1 X2 X3 X4 X5 
1 1 NA NA NA 21 
2 2 7 12 17 22 
3 3 NA NA NA 23 
4 4 9 14 19 24 
5 5 NA NA NA 25 
+0

謝謝,這工作!我有一個問題,最終的命令與我在原始腳本中的命令非常相似,但刪除了「哪個」。添加「哪個」添加到命令是什麼? –

+0

'is.na'是一個邏輯函數,它可以給你TRUE或FALSE。它也保持對象的維度,而'which(is.na(ACC))'會給你一個向量。在這種情況下,你不能用一個向量索引data.frame。 –

相關問題