【发布时间】:2018-03-22 14:27:26
【问题描述】:
我在 R 中有一个包含数千行和 10 列的数据框(数据)。 其中 9 列包含多个级别的因子。
这是数据框的一小部分。
一个 gr1
10 303.90
11 304.1
12 303.6
13 303.90 块
14 303.90k
例如,一个因素的水平是“303.90”,另一个水平是“303.90 obs”。我想将“303.90 obs”更改为“303.90”。 我正在使用以下命令来编辑关卡的名称。
data[] = as.data.frame(lapply(data, function(x) {x = gsub("303.90 obs","303.90", fixed = T, x)}))
但这不会将级别“303.90 obs”更改为“303.90”。它只是保持不变。 这个命令仍然适用于其他字符串,例如。 “303.9”更改为“303.90” 当我使用时:
data[] = as.data.frame(lapply(data, function(x) {x = gsub("303.9 obs","303.90", fixed = T, x)}))
关于为什么会这样的任何建议?
【问题讨论】:
-
首先,从
lapply中删除x=。二、请提供小样本数据:stackoverflow.com/questions/5963269/… -
所以你也想把
303.90k改成303.90?然后你需要正则表达式。 -
我认为我的代码可能正在替换“303.90 obs”的“303.90”部分,但仍在打印字符串的其余部分。会是这样吗?
-
是的。 303.90k 也应该改变。我会尝试使用正则表达式,但我认为 gsub 无论如何都应该适用于这个例子。在继续使用正则表达式之前,需要弄清楚它为什么不起作用。
-
@gwarr:我更新了我的脚本。请检查这是否有效。