调试R函数报错例子并分享一个数据格式int转成num的小技巧

今天我在进行R操作的时候反复出现错误,显示:二进列运算符中有非数值参数,导致错误。
在这里插入图片描述
我检查了一下数据,格式如下,有两个列为字符,可能会导致错误
在这里插入图片描述
于是我把字符转换了一下

x1$TX<-as.numeric(x1$TX)
x1$CLIN_STG<-as.numeric(x1$CLIN_STG)

再看看数据
在这里插入图片描述
现在全是数字了,再运行一下还是错误
在这里插入图片描述
这下我就奇怪了,都是数字为什么还是错误,应该没有非数字参数了呀,于是我检查了一下代码,发现是这个代码错了,
在这里插入图片描述
在这里产生了字符,确实有字符生成导致了错误
在这里插入图片描述
于是我仔细查看了一下数据,最终发现在UNIQID 格式int上
在这里插入图片描述
我们查看一下UNIQID的类型,显示整数,但是还是和num有区别的, 在R里面一般认为一个数字就是double类型的numeric数据,比如1; integer数据需要给数字加上后缀L,即1L,或用到as.integer,将数据特别标明是integer类型。

class(x1$UNIQID)

在这里插入图片描述
因此在数据进行转换的时候integer会生成字符,导致错误,函数运行失败。知道错误在哪里就好办了。把它转成num就好了。
我们是不能用as.numeric直接进行转换,这样会导致失败
在这里插入图片描述
我们可以通过apply程序转换,非常简单就搞定了

x3<-apply(x1,2,function(x1) as.numeric(x1))

我们可以看到数据中已经没有int了,虽然看起来和原来没什么不同
在这里插入图片描述
在这里插入图片描述
还有另一种方法就是通过矩阵转化,也是一样的

x2<-matrix(as.numeric(x1),nc=7)
colnames(x2)<-colnames(x1)

最后转换好的数据成功运行并生成数据
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值