如何使用包括“ <”运算符的条目执行计算?在这种情况下,将上限除以二

Yun*_*Gud 3 r

我有一个生态数据的数据框,其中某些条目比化学中称为LOQ(定量限)的条目低。这些测量结果报告为“小于LOQ”。我要做的是将这些值更改为LOQ的一半。我可能可以找到删除“ <”的代码,但随后我不知道该除以2的哪个项。

#creating df 
x1 <- c(1,2,"<1")
x2 <- c(3,"<4",3)
x3 <- c(1,2,3)
df <- data.frame(x1,x2,x3)
df

x1 x2 x3
1  1  3  1
2  2 <4  2
3 <1  3  3

Run Code Online (Sandbox Code Playgroud)

我希望结果为:

##### result #######
x1 <- c(1,2,0.5)
x2 <- c(3,2,3)
x3 <- c(1,2,3)
result <- data.frame(x1,x2,x3)

   x1 x2 x3
1 1.0  3  1
2 2.0  2  2
3 0.5  3  3
Run Code Online (Sandbox Code Playgroud)

因此,基本上,将<符号忽略,并将剩余值除以2。有关如何执行此操作的任何想法?

小智 5

使用一个事实,即可以以1个或2个暗淡形式引用矩阵对象。

m <- as.matrix(df) 
isLT <- function(t) substr(t,1,1) == '<' 
islt <- which(isLT(m)) 
delLT <- function(x) substr(x,2,length(x)) 
m[islt] <- delLT(m[islt]) 
mode(m) <- 'numeric'
m[islt] <- m[islt] / 2
Run Code Online (Sandbox Code Playgroud)