楼主: vertual
2872 14

[问答] 如何解决在R中用QCA遇到了Error: non-numeric argument to binary operator?(语言-r [推广有奖]

  • 0关注
  • 0粉丝

高中生

27%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
1.6060
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
441 点
帖子
14
精华
0
在线时间
23 小时
注册时间
2022-10-12
最后登录
2025-8-16

楼主
vertual 发表于 2023-10-10 22:02:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

在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列都搞了一下,还是没有用,各路大神们有什么解决办法吗?十分感谢!!


二维码

扫码加我 拉你入群

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

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

关键词:operator argument numeric Perato Binary QCA 寻求对QCA感兴趣的朋友 r语言入门

回帖推荐

sun_man 发表于2楼  查看完整内容

这个错误通常表示在二元运算符中使用了非数值的参数。尝试将数据列转换为数值类型,但仍然遇到了这个错误。 有几种可能的原因导致这个问题: 数据列中包含非数值字符:请确保数据列中只包含数值类型的数据。如的数据列中包含了字符或其他非数值类型的数据,将无法将其转换为数值类型。可以使用is.numeric()函数检查每列的数据类型,并确保只有数值列被转换为数值类型。 数据列中包含缺失值:如果数据列中包含缺失值(如NA),那 ...

沙发
sun_man 在职认证  发表于 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
上述代码仅为示例,需要根据数据和需求进行适当的修改。

藤椅
vertual 发表于 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)   

板凳
sun_man 在职认证  发表于 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"表明在二元操作符中使用了非数值类型的参数。你要不再检查下代码中是否有使用二元操作符(例如+、-、*、/等),并确保两个操作数都是数值类型

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

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

7
hbji 发表于 2023-10-22 07:36:10
在真值表分析时不选择 行名 列

8
hbji 发表于 2023-10-22 15:03:58
  p2f <- p1f[, 2:8]#删除id列
truth <- truthTable(p2f,outcome = "pjx",incl.cut = 0,show.cases = TRUE,
                    ddc = TRUE,complete = TRUE)  

9
hbji 发表于 2023-10-22 15:11:13
或者
若1-8列依次为 id, C1, C2, C3, C4, C5 ,C6, pjx,则增加 conditions = "C1, C2, C3, C4, C5 ,C6",不能默认,默认包括id列,会报错。
truth <- truthTable(p1f,outcome = "pjx",incl.cut = 0, conditions = "C1, C2, C3, C4, C5 ,C6",show.cases = TRUE, ddc = TRUE,complete = TRUE)   

10
hbji 发表于 2023-10-22 15:17:12
p1f <- read.csv("*.csv", header=T, row.names = 1,fileEncoding ="UTF-8-BOM")
# header=T, row.names = 1,表示以第一行为列名、第一列为行名读入数据文件
再执行
truth <- truthTable(p1f,outcome = "pjx",incl.cut = 0,show.cases = TRUE,
                    ddc = TRUE,complete = TRUE)  

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-29 16:22