Tidyr Unite() 函数 Returns 空数据框

Tidyr Unite() Function Returns Empty Data Frame

当尝试合并使用 quanteda 包创建的 kwic 数据框中的两列(pre 和 post)时,生成的数据框仅包含 NA 值。使用 base R 中的 paste() 函数工作得很好,但我宁愿用一种简洁的方法来解决这个问题。有没有其他人以前经历过这种情况并且知道该怎么办?

我在下面包含了一个 reprex,但不幸的是,在 reprex 中,联合函数工作得很好。我想知道它是否与输入是使用 quanteda::kwic?

创建的数据框有关
pre = c("Pre Text 1", "Pre Text 2", "Pre Text 3")
post = c("Post Text 1", "Post Text 2", "Post Text 3")

data <- data.frame(id=1:3, 
                   pre = pre, 
                   post = post)

data2 <- data %>%
  unite("merged", pre, post, sep = " ")

编辑:我在下面的代码中包含了一个更好的例子。 “x”是将 kwic() 应用于我的数据集而产生的数据框,speeches_meta 是与“x”中包含的文本相关联的元数据。我的问题是,当 运行 “dput”对象上的联合函数时,它以某种方式使变量的数量加倍,并且除了两个之外的所有观察都是空的(两个不包含一堆信息来自所有变量)。

merged_kwic <- left_join(x, speeches_meta, by = "docname")

dput <- dput(merged_kwic[1:3, c("pre", "post")])

dput <- dput %>%
  unite("merged", pre, post, sep = " ")

编辑 2:

以下是我在运行以下代码后得到的输出:

dput(merged_kwic[1:3, c("pre", "post")])
structure(list(docname = c("585662", "586622", "650973"), from = c(377L, 
1665L, 562L), to = c(377L, 1665L, 562L), pre = c("5 Dies kann weder durch", 
"tief in die Mottenkiste der", "unterstellen dass es ihnen um"
), keyword = c("Ostalgie", "Ostalgie", "Ostalgie"), post = c("noch durch Amnesie durch Gedächtnisverlust", 
"greifen würden 33 An dieser", "geht um eine Werbung für"), 
    pattern = structure(c(1L, 1L, 1L), .Label = "ostalgie", class = "factor"), 
    id = c(585662, 586622, 650973), session = c(241, 245, 56), 
    electoralTerm = c(13, 13, 15), firstName = c("Dietrich", 
    "werner", "Vera"), lastName = c("Austermann", "schulz", "Lengsfeld"
    ), politicianId = c(11000066, 11002108, 11002721), factionId = c(4, 
    3, 4), documentUrl = c("https://dip21.bundestag.de/dip21/btp/13/13241.pdf", 
    "https://dip21.bundestag.de/dip21/btp/13/13245.pdf", "https://dip21.bundestag.de/dip21/btp/15/15056.pdf"
    ), positionShort = c("Member of Parliament", "Member of Parliament", 
    "Member of Parliament"), positionLong = c(NA_character_, 
    NA_character_, NA_character_), date = structure(c(10395, 
    10402, 12236), class = "Date")), ntoken = c(`585662` = 839L, 
`586622` = 1724L, `650973` = 647L), row.names = c(NA, 3L), class = c("kwic", 
"data.frame"))

我意识到这里的问题是 unite() 函数不一定适用于 kwic 数据帧。将数据帧传输到 as.tibble() 后,它最终工作正常。希望这对以后的人有所帮助!