在R中 - 根据条件写入输出csv文件

时间:2017-10-16 05:17:33

标签: r

我是R.的新手 我正在写一个程序 (a)正在读取输入文件(.csv) - 此文件有3列(全部为数字) (b)基于第3列的条件(比如 - 第3列的值> 100),将新记录添加到输出文件中。 我在撰写“if”条款时遇到了问题。

写作时

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

然后会出现以下错误消息:

cond <- as.numeric(x_compare) > 99.99

接下来我尝试了以下

order: false

但我不清楚 - 如何捕获'cond'的“TRUE”值,以便可以在输出文件中写入新记录。

关于如何构建这部分程序的任何建议都是非常受欢迎的。

2 个答案:

答案 0 :(得分:1)

您需要检查数据集中的NA

as.numeric(NA)NANA > 99也是NA

根据R docs:

  

用法
  if(cond) expr

     

cond
  长度为1的逻辑向量,不是NA。长度大于的条件   一个目前被接受警告,但只使用第一个元素。   当环境变量时,会发出错误信号   _R_CHECK_LENGTH_1_CONDITION_设置为true。其他类型被强制为逻辑   如果可能的话,忽略任何一个班级。

因此cond不能是NA

答案 1 :(得分: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")