在 R 中使用 gsub() 将 y 替换为 x
replace y with x using gsub() in R
我的问题是我想使用 gsub() 将 y 替换为 x,但不是针对所有观察结果,我只想将 y 中的观察结果替换为 x 中的以下观察结果:keyword1 和 keyword2。
我的列不包含 NA 或缺失值。
我有什么
x =c('this', 'is', 'some', 'keyword1', 'or', 'terms', 'keyword2')
y =c('SFP', 'VERB', 'ADP', 'NOUN', 'ADP', 'VERB', 'SFP')
toString(y)
toString(x)
df = cbind(x,y)
df = data.frame(df)
df
x y
1 this SFP
2 is VERB
3 some ADP
4 keyword1 NOUN
5 or ADP
6 terms VERB
7 keyword2 SFP
我需要的是:
x y
1 this SFP
2 is VERB
3 some ADP
4 keyword1 keyword1
5 or ADP
6 terms VERB
7 keyword2 keyword2
您不需要 gsub
,因为您不想替换匹配的字符本身。以下代码将 y
元素替换为 grepl
在列 x
.
中找到匹配项的关键字
keywords <- c("keyword1", "keyword2")
for (kw in keywords)
df$y[grepl(kw, df$x)] <- kw
如果您知道匹配将是精确的,那么使用会更自然:
for (kw in keywords)
df$y[df$x == kw] <- kw.
仅供参考,您可以更轻松地创建数据框:
x = c('this', 'is', 'some', 'keyword1', 'or', 'terms', 'keyword2')
y = c('SFP', 'VERB', 'ADP', 'NOUN', 'ADP', 'VERB', 'SFP')
df = data.frame(x, y, stringsAsFactors = FALSE)
正如@Rich Scriven 所建议的,让我们首先拥有字符列:
df <- data.frame(x, y, stringsAsFactors = FALSE)
那么几个不错的选择是
z <- c("keyword1", "keyword2")
df$y[df$x %in% z] <- df$x[df$x %in% z]
# and
df$y <- ifelse(df$x %in% z, df$x, df$y)
gsub
在这里不是必需的,因为您的匹配似乎是准确的。也就是说,您不是在 df$y
.
的某个元素中的某处寻找您的关键字
我的问题是我想使用 gsub() 将 y 替换为 x,但不是针对所有观察结果,我只想将 y 中的观察结果替换为 x 中的以下观察结果:keyword1 和 keyword2。
我的列不包含 NA 或缺失值。
我有什么
x =c('this', 'is', 'some', 'keyword1', 'or', 'terms', 'keyword2')
y =c('SFP', 'VERB', 'ADP', 'NOUN', 'ADP', 'VERB', 'SFP')
toString(y)
toString(x)
df = cbind(x,y)
df = data.frame(df)
df
x y
1 this SFP
2 is VERB
3 some ADP
4 keyword1 NOUN
5 or ADP
6 terms VERB
7 keyword2 SFP
我需要的是:
x y
1 this SFP
2 is VERB
3 some ADP
4 keyword1 keyword1
5 or ADP
6 terms VERB
7 keyword2 keyword2
您不需要 gsub
,因为您不想替换匹配的字符本身。以下代码将 y
元素替换为 grepl
在列 x
.
keywords <- c("keyword1", "keyword2")
for (kw in keywords)
df$y[grepl(kw, df$x)] <- kw
如果您知道匹配将是精确的,那么使用会更自然:
for (kw in keywords)
df$y[df$x == kw] <- kw.
仅供参考,您可以更轻松地创建数据框:
x = c('this', 'is', 'some', 'keyword1', 'or', 'terms', 'keyword2')
y = c('SFP', 'VERB', 'ADP', 'NOUN', 'ADP', 'VERB', 'SFP')
df = data.frame(x, y, stringsAsFactors = FALSE)
正如@Rich Scriven 所建议的,让我们首先拥有字符列:
df <- data.frame(x, y, stringsAsFactors = FALSE)
那么几个不错的选择是
z <- c("keyword1", "keyword2")
df$y[df$x %in% z] <- df$x[df$x %in% z]
# and
df$y <- ifelse(df$x %in% z, df$x, df$y)
gsub
在这里不是必需的,因为您的匹配似乎是准确的。也就是说,您不是在 df$y
.