我是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”值,以便可以在输出文件中写入新记录。
关于如何构建这部分程序的任何建议都是非常受欢迎的。
答案 0 :(得分:1)
您需要检查数据集中的NA
。
as.numeric(NA)
是NA
。 NA > 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")