全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3098 3
2020-04-26
>a
           V1                  V2                  V3
1          -0.4                -1.4               2.4

2           3.3                3.4                  -1.42

3            3.75               -1.3                5.76
对着数据框进行处理。小于零的数值用零代替,大于零的数值,进行二次方然后减0.001的运算。该怎么写代码?能帮忙写一下吗?谢谢了
二维码

扫码加我 拉你入群

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

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

全部回复
2020-4-26 14:56:07
a<-as.matrix(a)
a[a<0] <- 0
a <- a^2 - 0.001
a[a<0] <- 0
a
二维码

扫码加我 拉你入群

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

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

2020-4-26 19:24:48
上面的代码,还是有问题,不适合0<=a[m,n]<sqrt(0.001)的情况,否则第二次赋0值会出错。可以暂时改为:
a<-as.matrix(a)
a[a<0] <- 0
a <- a^2 - 0.001
a[a==-0.001] <- 0
a
但是这样改的话,只适合矩阵原来的元素没有0值的情况,否则也会出错。

所以稳妥起见,还是编个循环语句,一个个元素的重新赋值吧,只是如果数据量大的话,运行起来会很耗时间。
二维码

扫码加我 拉你入群

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

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

2020-4-26 19:29:19
另外,你的题目中,没有说元素是0时怎么处理。
如果确认没有0值,则完全可以用第二次改过的方法。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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