r:pmatch isn';t为大数据帧工作

r:pmatch isn';t为大数据帧工作,r,map-matching,R,Map Matching,我有两个数据帧,第一个(dt)包含所有chr,第二个(TargetWord)也是一个包含chr的字典。我已使用pmatch在dt中搜索TargetWord中可用的单词,并从TargetWord返回位置。当数据帧很小时,它可以正常工作但当数据帧很大时,问题就开始了,它只返回第一列的单词位置,其余列变为NA ## Data Table word_1 <- c("conflict","", "resolved", "", "", "") word_2 <- c("", "one", "tr

我有两个数据帧,第一个(
dt
)包含所有
chr
,第二个(
TargetWord
)也是一个包含
chr
的字典。我已使用
pmatch
dt
中搜索
TargetWord
中可用的单词,并从
TargetWord
返回位置。当数据帧很小时,它可以正常工作但当数据帧很大时,问题就开始了,它只返回第一列的单词位置,其余列变为NA

## Data Table
word_1 <- c("conflict","", "resolved", "", "", "")
word_2 <- c("", "one", "tricky", "one", "", "one")
word_3 <- c("thanks","", "", "comments", "par","")
word_4 <- c("thanks","", "", "comments", "par","")
word_5 <- c("", "one", "tricky", "one", "", "one")
dt <- data.frame(word_1, word_2, word_3,word_4, word_5, stringsAsFactors = FALSE)

## Targeted Words
TargetWord <- data.frame(cbind(c("conflict", "thanks", "tricky", "one", "two", "three")))

## convert into matrix (needed)
dt <- as.matrix(dt)
TargetWord <- as.matrix(TargetWord)

result <- `dim<-`(pmatch(dt, TargetWord, duplicates.ok=TRUE), dim(dt))
print(result)
现在,在阅读了下面的两个
.csv
之后,结果仅适用于第一列,我希望它适用于所有列,如上面的result。下面,dt1=79*50数据帧,word_dict 13901*1数据帧

#################### on big data #####################################
dt1 <- read.csv("C:/Users/Wonderland/Downloads/string_feature.csv", stringsAsFactors = FALSE)
word_dict <- read.csv("C:/Users/Wonderland/Downloads/word_dict.csv", stringsAsFactors = FALSE)

dt1 <- as.matrix(dt1)
word_dict <- as.matrix(word_dict)

result <- `dim<-`(pmatch(dt1, word_dict, duplicates.ok=TRUE), dim(dt1))
print(result)
关于大数据的《代码》##################################### dt1尝试应用:

apply(dt,2,function(x) pmatch(x,TargetWord,duplicates.ok = T))
如您所见,结果是相同的,但它可能适用于大型数据帧

     word_1 word_2 word_3 word_4 word_5
[1,]      1     NA      2      2     NA
[2,]     NA      4     NA     NA      4
[3,]     NA      3     NA     NA      3
[4,]     NA     NA     NA     NA     NA
[5,]     NA     NA     NA     NA     NA
[6,]     NA     NA     NA     NA     NA
我试过:

word_1 <- rep(c("conflict","", "resolved", "", "", ""),1000)
word_2 <- rep(c("", "one", "tricky", "one", "", "one"),1000)
word_3 <- rep(c("thanks","", "", "comments", "par",""),1000)
word_4 <- rep(c("thanks","", "", "comments", "par",""),1000)
word_5 <- rep(c("", "one", "tricky", "one", "", "one"),1000)

word\u 1您是否遇到错误?意外的结果?如果是,它与预期结果有什么不同?你觉得谁能帮上忙?谢谢nicola。我实际上并没有得到错误,意外的结果意味着什么,当我在实际数据上运行相同的代码时,结果只针对一列(第一列)。我想从整个数据框架的单词词典中找到单词的位置。一个好的问题应该提供一个可复制的例子和对问题的清晰描述。你也没有提供。
只有一列的结果应该是什么意思?其他列都是
NA
s?或者没有其他专栏?您是否尝试对数据进行子集划分,以查看问题是否仍然存在?你为什么不分享一些数据呢?或者,如果它们太大,则至少提供一些关于它们的信息(例如,
str
的输出以及涉及的每个对象的类似信息)。对不起,stackoverflow中新增了。您可以看到我对小数据框的结果,每个列的单词位置都会出现。对于big dataframe,它只针对
第一列
该列的其余部分返回NA
,如果您不介意,我如何在stackoverflow中上传这样的大数据帧?
word_1 <- rep(c("conflict","", "resolved", "", "", ""),1000)
word_2 <- rep(c("", "one", "tricky", "one", "", "one"),1000)
word_3 <- rep(c("thanks","", "", "comments", "par",""),1000)
word_4 <- rep(c("thanks","", "", "comments", "par",""),1000)
word_5 <- rep(c("", "one", "tricky", "one", "", "one"),1000)