[英]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.