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

标签 r dataframe replace

我正在尝试在 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
}

但我想知道是否有更简单(或更清洁)的方法来做到这一点。任何提示?

最佳答案

改为这样写:

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

关于R 数据帧错误 - 替换有 1 行,数据有 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47001491/

相关文章:

java - 返回两个给定字符串之间较大序列的大小

r - 使用ggplot2在直方图上绘制置信区间

R数据点周边缓冲区

r - 使用 R 中的线迹创建堆叠条形图的辅助轴

numpy - 与ndarray相关的DataFrame.mul使用错误

java - 替换字符串 Java

R plotly choropleth禁用鼠标滚轮缩放

python - 根据其他列上的某些条件更新 dask 数据框中列的值

python - Pandas 数据框groupby创建列的列表或数组

linux - 使用文件作为搜索和替换的输入来查找和替换 shell