我的问题是,我想用gsub()将y替换为x,但不是对于所有的观测,我只想用x中的以下观测替换y中的观测: 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发布于 2018-03-09 15:49:48
您不需要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.FYI,您可以更容易地创建dataframe:
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)发布于 2018-03-09 15:53:57
正如@Rich建议的那样,让我们首先使用字符列:
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的某个元素中寻找关键字。
https://stackoverflow.com/questions/49195389
复制相似问题