全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2820 14
2023-10-10

在R中用QCA遇到了Error: non-numeric argument to binary operator

所用软件: Rstudio

本人r中导入的数据表名称是p1f,第一列是id,第2到8列是数据,现在正在建立真值表,但是系统提示Error: non-numeric argument to binary operator。目前尝试输入了代码:p1f[,c(2:8)] <- as.numeric(unlist(p1f[,c(2:8)])),但是没有用,于是我依次输入:p1f$列1 <- as.numeric(p1f$列1)这样把2到8列都搞了一下,还是没有用,各路大神们有什么解决办法吗?十分感谢!!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-10-11 14:09:30
这个错误通常表示在二元运算符中使用了非数值的参数。尝试将数据列转换为数值类型,但仍然遇到了这个错误。
有几种可能的原因导致这个问题:
数据列中包含非数值字符:请确保数据列中只包含数值类型的数据。如的数据列中包含了字符或其他非数值类型的数据,将无法将其转换为数值类型。可以使用is.numeric()函数检查每列的数据类型,并确保只有数值列被转换为数值类型。
数据列中包含缺失值:如果数据列中包含缺失值(如NA),那么在尝试将其转换为数值类型时可能会出错。可以使用is.na()函数检查每列是否包含缺失值,并根据需要进行处理。
下面是一些解决方案:
检查数据列的数据类型:使用is.numeric()函数检查每列的数据类型,确保只有数值列被转换为数值类型。例如,您可以使用以下代码来检查列2到8的数据类型:
sapply(p1f[, 2:8], is.numeric)
如果返回结果中有FALSE,则表示该列包含非数值数据。
处理非数值数据或缺失值:如果发现某些列包含非数值数据或缺失值,您可以根据具体情况进行处理。您可以选择删除包含非数值数据或缺失值的行,或者将它们替换为适当的数值或缺失值代码(如0或NA)。
# 删除包含非数值数据的行
p1f <- p1f[apply(p1f[, 2:8], 1, function(x) all(is.numeric(x))), ]
# 将缺失值替换为适当的数值或缺失值代码
p1f[is.na(p1f[, 2:8])] <- 0  # 替换为0
p1f[is.na(p1f[, 2:8])] <- NA  # 替换为NA
上述代码仅为示例,需要根据数据和需求进行适当的修改。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-10-11 15:30:12
sun_man 发表于 2023-10-11 14:09
这个错误通常表示在二元运算符中使用了非数值的参数。尝试将数据列转换为数值类型,但仍然遇到了这个错误。 ...
十分感谢老师的回答!我在r中尝试了一下您的方法,数据表中没有缺失值,输入sapply(p1f[, 2:8], is.numeric)返回的结果都是TRUE,但仍然没有解决问题,包括之前在网上查询,也都表明是包含非数值数据的问题,但是现在我的数据中没有非数值数据,还是出现Error: non-numeric argument to binary operator,身为初学者我很困惑……附:我的真值表代码:  truth <- truthTable(p1f,outcome = "pjx",incl.cut = 0,show.cases = TRUE,
                    ddc = TRUE,complete = TRUE)   
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-10-12 09:57:32
vertual 发表于 2023-10-11 15:30
十分感谢老师的回答!我在r中尝试了一下您的方法,数据表中没有缺失值,输入sapply(p1f[, 2:8], is.numer ...
错误信息"non-numeric argument to binary operator"表明在二元操作符中使用了非数值类型的参数。你要不再检查下代码中是否有使用二元操作符(例如+、-、*、/等),并确保两个操作数都是数值类型
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-10-22 07:30:45
sun_man 发表于 2023-10-12 09:57
错误信息"non-numeric argument to binary operator"表明在二元操作符中使用了非数值类型的参数。你要不再 ...
以第一行为列名、第一列为行名读入数据文件
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-10-22 07:32:18
vertual 发表于 2023-10-11 15:30
十分感谢老师的回答!我在r中尝试了一下您的方法,数据表中没有缺失值,输入sapply(p1f[, 2:8], is.numer ...
以第一行为列名、第一列为行名读入数据文件
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群