R数据框错误 - 替换有1行,数据有0行

8

我正在尝试用R语言编写一些与大型进程相关的代码,但是我一直遇到这个错误:

Example <- data.frame(Col1 = c(1, 2, 3, 4, 5),
                      COl2 = c("A", "B", "C", "D", "E"))

Example[Example$Col1 > 3,]$Col1 <- 3 #works fine, 2 rows were selected

Example[Example$Col1 < -5,]$Col1 <- 0 #gets an error, 0 rows were selected

Error in `$<-.data.frame`(`*tmp*`, Col1, value = 0) :
    replacement has 1 row, data has 0

我知道造成错误的原因是没有选择零行,因此无法进行替换。但是为了使我的流程能够运行,如果该行被跳过我也不介意。
我知道我可以用一个if来避免它:
if(sum(Example$Col1 < -5) > 0){
    Example[Example$Col1 < -5,]$Col1 <- 0
}

但我想知道是否有更简单(或更清晰)的方法来做这件事。有什么提示吗?
1个回答

7

请改成这样写:

Example$Col1[Example$Col1 > 3] <- 3
Example$Col1[Example$Col1 < -5] <- 0

请注意,以下代码也可以正常工作:Example[Example$Col1 < -5, "Col1"] <- 0 - G. Grothendieck
非常感谢,@janos!非常有帮助! - RMolero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接