簡體   English   中英

檢查字符串是否包含帶有R的列表的一個元素

[英]check if a string contains one element of a list with R

我想檢查data_frame_1的至少一個元素是否在data_frame_2中,並像新列一樣添加它

我的代碼:

library(data.table)

object_to_check <- data.table(c('aaax', 'bbbx', 'cccy', 'dddk', 'mmmt'))
colnames(object_to_check) <- 'x'
list_of_element <- data.table(c('ax', 'kh', 'dk'))
colnames(list_of_element) <- 'y'

Fun2 <- function(element_to_find, string_to_check) {
   element_to_find <- '0'
      if (element_to_find == '0') {
         for (i in 1:length(list_of_element)) {
            m <- lista[i]
            element_to_find <- ifelse(grepl(m, string_to_check, ignore.case = T) == T,string_to_check,'')
         }
      }
   }

object_to_check <- object_to_check[, check := Fun2(check, x)]

我的代碼給我這個錯誤:

Warning message:
In `[.data.table`(object_to_check, , `:=`(check, Fun2(check, x))) :
Adding new column 'check' then assigning NULL (deleting it).

我被卡在這個錯誤,我找不到我的問題的解決方案。 可以幫我嗎?

所需的輸出:

x check
aaax ax  
bbbx NA
cccx NA 
dddk dk  
mmmt NA 

謝謝

你可以這樣

> df1 <- data.frame(row.names=1:4, var1=c(TRUE, TRUE, FALSE, FALSE), var2=c(1,2,3,4))
> df2 <- data.frame(row.names=5:7, var1=c(FALSE, TRUE, FALSE), var2=c(5,2,3))
> df1
   var1 var2
1  TRUE    1
2  TRUE    2
3 FALSE    3
4 FALSE    4
> df2
   var1 var2
5 FALSE    5
6  TRUE    2
7 FALSE    3

還可以使用其他一些最簡單的方法。 您可以使用all.equal(target, current, ...)函數。 它不對數據框排序。 另一種方法是使用identical()函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM