用 R 中数据框中的值替换不等式

Replace inequalities with values in dataframe in R

我有一个涉及多个列的数据框,其中有许多存在不平等的情况。我想要的是一个 R 脚本,它将识别这些不等式并将它们替换为实际值。更具体地说,假设我们有 "<2" 并且我们想用它的一半值替换它 ("<2" -> 1.0)。有没有一种通用的方法可以做到这一点,这样我就不需要手动查找数据框中的所有不等式并替换它们?

一个简单的例子如下:

第 1 栏、第 2 栏、第 3 栏、第 4 栏 2.2, <3, 4,<2
3.4, 4, <5,3 4.2, 2,2.1,5 1.3, 1,4,<8

我想得到这样的东西:

第 1 栏、第 2 栏、第 3 栏、第 4 栏 2.2, 1.5, 4,1
3.4, 4, 2,5,3 4.2, 2,2.1,5 1.3, 1,4,4

我们可以用表达式替换 <evaluate

df1[] <-  lapply(df1, function(x) sapply(sub("<", "(1/2)*", x, fixed = TRUE), 
     function(y) eval(parse(text = y))))

df1
#  Col1 Col2 Col3 Col4
#1  2.2  1.5  4.0    1
#2  3.4  4.0  2.5    3
#3  4.2  2.0  2.1    5
#4  1.3  1.0  4.0    4

数据

df1 <- structure(list(Col1 = c(2.2, 3.4, 4.2, 1.3), Col2 = c("<3", "4", 
"2", "1"), Col3 = c("4", "<5", "2.1", "4"), Col4 = c("<2", "3", 
"5", "<8")), row.names = c(NA, -4L), class = "data.frame")