问题描述
我有一个涉及多列的数据框,其中存在许多不等式的实例。我想要的是一个 R 脚本,它将识别这些不等式并用实际值替换它们。更具体地说,让我们假设我们有 " 1.0) 替换它。有没有一种通用的方法来做到这一点,这样我就不需要手动查找数据框中的所有不等式并替换它们?
一个简单的例子可能如下:
Col1、Col2、Col3、Col4 2.2、 3.4,4,
我想得到这样的东西:
Col1,Col2,Col3,Col4
2.2,1.5,1
3.4、4、2、5、3
4.2、2、2.1、5
1.3,1,4
解决方法
我们可以用表达式替换 <
并eval
uate
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")