最佳答案
我正在研究一个数据帧,它没有检测功能,代码是“ <”。有时候在“ <”后面有一个空格,有时候没有例如“ < 2”或者“ < 2”。我想移除这个地方的所有痕迹。
例如:
data <- data.frame(name = rep(letters[1:3], each = 3), var1 = rep('< 2', 9), var2 = rep('<3', 9))
name var1 var2
1 a < 2 <3
2 b < 2 <3
3 c < 2 <3
这就是我要做的:
我可以提取所有的值并创建新的字符串,但是我不能把它们放回数据框中。
index <- str_detect(unlist(data), '<')
index <- matrix(index, nrow = 3)
data[index]
#[1] "< 2" "< 2" "< 2" "<3" "<3" "<3"
replacements <- str_replace_all(data[index], "<[ ]+","<")
replacements
#[1] "<2" "<2" "<2" "<3" "<3" "<3"
data[index] <- replacements
#Error in `[<-.data.frame`(`*tmp*`, index, value = c("<2", "<2", "<2", :
# unsupported matrix index in replacement