2017-10-16 78 views
0

我是R.新手 我正在寫一個程序,其中 (a)輸入文件(.csv)正在讀取 - 此文件有3列(全部(b)根據第3列的條件(比如說第3列的值大於100),新的記錄被添加到輸出文件中。 我在編寫「if」條款時遇到問題。In R - 根據條件輸出csv文件

當我寫

if (as.numeric(fld 3) > 100) 
     { 
     x <- data.frame(computed fld1, computed fld 2, computed fld3) 
     write.table(x, "outputfile.csv", sep=",",append=TRUE, quote=FALSE, 
col.names=FALSE, row.names=FALSE) 
    } 

然後會出現以下錯誤消息:

Error in if (as.numeric(fld3) > 99.99) { : 
    missing value where TRUE/FALSE needed 

接下來,我試着用以下

cond <- as.numeric(x_compare) > 99.99 

但我不清楚 - 如何捕獲「cond」的「TRUE」值,以便新記錄可寫入輸出文件。

關於如何構建這部分程序的任何建議將是最受歡迎的。

+1

可以請你dput()你的數據集 –

回答

0

下面是使用虛擬數據集的例子:

set.seed(4) 
df <- data.frame(v1=sample(1:100, 20, replace=T), 
       v2=sample(1:100, 20, replace=T), 
       v3=sample(80:150, 20, replace=T)) 

output <- split(df, df$v3>100)[[2]] 
write.csv(output, "outputfile.csv") 
1

您需要在您的數據集中檢查NA秒。

as.numeric(NA)NA。而NA > 99也是NA

作爲每ř文檔:

用法
if(cond) expr

cond
長度爲一個邏輯矢量不是NA。長度大於 的條件目前被接受並帶有警告,但僅使用第一個元素。 當環境變量 _R_CHECK_LENGTH_1_CONDITION_設置爲true時,會發出錯誤信號。如果可能,其他類型被強制邏輯 ,忽略任何類別。

所以cond不能是NA