数据帧中的R类型int/char混淆

数据帧中的R类型int/char混淆,r,dataframe,types,char,int,R,Dataframe,Types,Char,Int,我有一个数据帧,我从中创建了另一个数据帧。在这条线路的某个地方,事情变得一团糟,但我不知道在哪里,以及如何修复它 代码在第一个数据帧上工作,所以我假设这是某种类型的不匹配?我是否需要以某种方式将字段转换回字符串 ##creating the second data frame adat2 <- data.frame(id=character(), Title=character(), Domain=character(), lemtext1=character(), Language=c

我有一个数据帧,我从中创建了另一个数据帧。在这条线路的某个地方,事情变得一团糟,但我不知道在哪里,以及如何修复它

代码在第一个数据帧上工作,所以我假设这是某种类型的不匹配?我是否需要以某种方式将字段转换回字符串

##creating the second data frame

adat2 <- data.frame(id=character(), Title=character(), Domain=character(), lemtext1=character(), Language=character(), day=character())


##copying from the first one, whilst splitting rows into multiple rows based on lemtext

for (row in 1:nrow(adat1)) {
    splitlines <- strsplit(adat1$lemtext[row], ", |\\. |: |; ")[[1]]
    for (row2 in 1:NROW(splitlines)){
        adat2 <- add_row(adat2, id=adat1$id[row], Title=adat1$Title[row], Domain=adat1$Domain[row], lemtext1=splitlines[row2], Language=adat1$Language[row], day=adat1$day[row])
    }
}

##trying to work with the new dataframe

tokens <- space_tokenizer(adat2$`lemtext2`[which(((adat2$Domain=="index.hu") |
                                                   (adat2$Domain=="hvg.hu") | (adat1$Domain=="24.hu") | (adat1$Domain=="444.hu")) & 
                                                   (adat2$day>=as.Date("2018-10-13")) & (adat1$day<=as.Date("2019-10-13")))])
获取错误消息 adat1输出:

在adat2中,一切都是一个因素。这与创建adat2的方式有关。您需要将stringAsFactors=FALSE添加到data.frame函数中

adat2 <- data.frame(id = character(),
                    Title = character(),
                    Domain = character(),
                    lemtext1 = character(),
                    Language = character(),
                    day = character(),
                    stringAsFactors = FALSE)

如果你现在想知道你有什么样的专栏。您应该跨越2列或每列,您可以使用,例如classadat2$id。

我们可以使用代码,因为没有数据。你能分享adat1吗?你可以用dputadat1来做这件事,如果它很大,你可以用dputheadadat1,20。你好,我已经贴了一个doutput来感谢你的回复!有没有办法将adat2转换为正确的格式而不必再次运行整个代码?我正在处理大量数据,我的循环解决方案效率非常低,它运行了2天,哈哈,废话!您可以使用adat2$id转换每个列,循环总是很慢的,或者实际上循环中的某些内容增长很慢。如果你想继续循环,也许你可以在循环之前定义adat2的大小。非常感谢!转换位听起来应该可以做到这一点。我当然不想继续使用这个循环的解决方案,但我真的不知道如何以一种更优雅的方式来做我想做的事情。。。我会完成转换,然后回来!再次感谢你