我有一个涉及多列的数据框,其中存在许多不等式的情况。我想要的是一个 R 脚本,它将识别这些不等式并用实际值替换它们。更具体地说,假设我们有"<2"
并且我们想用它的 half value 替换它("<2" -> 1.0)
。有没有一种通用的方法来做到这一点,这样我就不需要手动查找数据框中的所有不等式并替换它们?
一个简单的例子可能如下:
Col1,Col2, Col3, Col4
3.4, RHO_1, <5, NA
2, RHO_2, 5, 1.3
我想得到这样的东西:
Col1,Col2,Col3,Col4
3.4, RHO_1, 2.5, NA
2, RHO_2, 5, 1.3
当所有元素都是数值时(例如,使用数值而不是 RHO_1、RHO_2 和 NA),以下命令有效:
df <- lapply(df, function(x) sapply(sub("<", "0.5*", x, fixed = TRUE),
function(y) eval(parse(text = y))))
NA
但是,上述命令在存在和 字符串时不起作用(例如RHO_1
)。在使用以下命令将所有非值转换为 NA 后,我试图找到仅值元素的位置:
value_ind<- which(!is.na(as.matrix(df)), arr.ind = TRUE, useNames = TRUE)
但我没有成功地使用这些信息。供您参考,实际数据框df
由许多行和列组成。