0
我在R中的數據框中有一個字符向量。我想在每個元素中查找關鍵字,引用關鍵字並調用一個新的向量,單詞是從我剛剛查找的關鍵詞開始的x個單詞。如何在R中解析時查找和引用關鍵字
例如,假設我有以下的數據幀:
> v1 <- c(1:5)
> v2 <- c("abc def ghi", "jkl mno def", "pqr stu vwx", "abc def yz", "ghi jkl mno def")
> sample <- as.data.frame(cbind(v1, v2))
> sample$v1 <- as.numeric(sample$v1)
> sample$v2 <- as.character(sample$v2)
> sample
v1 v2
1 1 abc def ghi
2 2 jkl mno def
3 3 pqr stu vwx
4 4 abc def yz
5 5 ghi jkl mno def
> str(sample)
'data.frame': 5 obs. of 2 variables:
$ v1: num 1 2 3 4 5
$ v2: chr "abc def ghi" "jkl mno def" "pqr stu vwx" "abc def yz" ...
而且,我想創建矢量v3
中查找單詞「高清」中的每個元素和之前立即返回字。因此,例如,v3
應該是這樣的:
> v3
[1] "abc" "mno" NA "abc" "mno"
我怎樣寫一個函數來自動做到這一點?
我有一個函數,我一直在使用它來查找關鍵字,並用相同的東西替換它們。改變在這個例子中,它看起來是這樣的:
> f1 <- function(df, cols, match_with, to_x = 'def'){
+ df[cols] <- lapply(df[cols], function(i)
+ ifelse(grepl(to_x, match_with, fixed = TRUE), TRUE,
+ i))
+ return(df)
+ }
> sample$v3 = NA
> sample = f1(sample, cols = c('v3'), match_with = sample$v2)
> sample
v1 v2 v3
1 1 abc def ghi TRUE
2 2 jkl mno def TRUE
3 3 pqr stu vwx NA
4 4 abc def yz TRUE
5 5 ghi jkl mno def TRUE
> str(sample)
'data.frame': 5 obs. of 3 variables:
$ v1: num 1 2 3 4 5
$ v2: chr "abc def ghi" "jkl mno def" "pqr stu vwx" "abc def yz" ...
$ v3: logi TRUE TRUE NA TRUE TRUE
我已經做了這個網站和其他人一個更換什麼是「真」,在f1
一些研究,所以,而不是返回「TRUE 「它會在我希望查找的關鍵字之前立即返回該單詞作爲參考。我想我很接近。這是我到目前爲止有:
> ptn <- "(.*?)"
> f2 <- function(df, cols, match_with, to_x = 'def'){
+ df[cols] <- lapply(df[cols], function(i)
+ ifelse(grepl(to_x, match_with, fixed = TRUE), gsub(ptn, " ", sample$v2),
+ i))
+ return(df)
+ }
> sample$v3 = NA
> sample = f2(sample, cols = c('v3'), match_with = sample$v2)
> sample
v1 v2 v3
1 1 abc def ghi ghi
2 2 jkl mno def def
3 3 pqr stu vwx <NA>
4 4 abc def yz yz
5 5 ghi jkl mno def def
> str(sample)
'data.frame': 5 obs. of 3 variables:
$ v1: num 1 2 3 4 5
$ v2: chr "abc def ghi" "jkl mno def" "pqr stu vwx" "abc def yz" ...
$ v3: chr " ghi" " def" NA " yz" ...
這看起來我的關鍵字,返回元素的最後一個字。但問題依然存在,我如何引用我正在查找的關鍵字並返回距離它一定距離的相對距離?具體而言,我必須用什麼模式替換"(.*?)"
才能在「def」之前立即返回單詞?
感謝您的幫助!
完美!謝謝 – DataProphets