我有一个包含几列的数据框架,其中有许多存在不平等的实例。我想要的,是一个R脚本,它可以识别这些不等式并用实际值代替它们。更具体地说,假设我们有" " 2"我们想用它的一半值("<2"→1.0)。是否有一种通用的方法来做到这一点,这样我就不需要手动找到数据框架内的所有不等式并替换它们?
一个简单的例子可能如下:
Col1,Col2, Col3, Col42.2, <3,4,<2
3.4, 4,<5,34.2、2、2.1、51.3、1、4、8 & lt;
我想得到这样的东西:
Col1、Col2 Col3 Col42.2、1.5、4、1
3.4、4、2、5、34.2、2、2.1、51.3、1、4、4
我们可以用表达式代替<
和eval
值
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")