为什么在我使用which()函数时会输出integer(0)?

时间:2019-02-20 00:04:24

标签: r which

我正在尝试确定我的V1列中的哪些变量在V5列中的值在95-105范围内,在V6列中的值也在7-13范围内。我正在使用which函数,并尝试将变量的名称存储在V1中的变量x下,但是我一直在获取输出integer(0)或character(0),但我不确定这是什么意思。我的代码的图像附在下面。

enter image description here

1 个答案:

答案 0 :(得分:2)

integer(0)表示数据框中没有没有个满足条件的元素。 (您可以尝试

with(df, any(95 <= V5 & V5 <= 105 & 
             13 <= V6 & V6 <= 17))

(根据@ H1的注释进行编辑,以匹配您的描述而不是您的代码);稍微重新排列以近似R的解析器无法处理的A < B < C语法...)

您可能应该检查str(df)和/或summary(df)(或sapply(df, class)),以确保确实按预期方式读入了数据框(或使用dplyr::read_csv() ,它会打印有关从数据集中推断出的类的信息。尤其是,数据中输入 not 的任何错别字都是有效数字(小数点后加,缺少诸如“?”之类的值)识别为丢失等),将使R将整列解释为字符(因为您已设置stringsAsFactors=FALSE)而不是数字变量。

如果您希望将第2-14列强制为数字列,则可以使用df[-1] <- lapply(df[-1], as.numeric),这是查找并解决上游任何问题的更好实践...