在R中,如何对每个元素的条件进行取整?
下面是示例数据表 我想有条件地舍入任何超过60到2位小数的元素,而不使用for循环在R中,如何对每个元素的条件进行取整?,r,R,下面是示例数据表 我想有条件地舍入任何超过60到2位小数的元素,而不使用for循环 x <- data.frame(c1=c(1,2,3,8,1,300.234), c2=c(5.234,5,6,3,3.1,4.233), c3=c(7,6,8,4.3,2,60.191), c4=c(4,1,9.8,1,9,1), c5=c(3,8,1,7,3,5),
x <- data.frame(c1=c(1,2,3,8,1,300.234),
c2=c(5.234,5,6,3,3.1,4.233),
c3=c(7,6,8,4.3,2,60.191),
c4=c(4,1,9.8,1,9,1),
c5=c(3,8,1,7,3,5),
c6=c(2,3,5,2,5,7),
row.names = c("r1","r2","r3","r4","r5","r6"))
四舍五入后,函数输出应为:
c1 c2 c3 c4 c5 c6
r1 1.000 5.234 7.000 4.0 3 2
r2 2.000 5.000 6.000 1.0 8 3
r3 3.000 6.000 8.000 9.8 1 5
r4 8.000 3.000 4.300 1.0 7 2
r5 1.000 3.100 2.000 9.0 3 5
r6 300.23 4.233 60.19 1.0 5 7
试试这个
sapply(x,函数(y)ifelse(y>60,圆(y,2),y))
试试这个
sapply(x,函数(y)ifelse(y>60,四舍五入(y,2),y))
但是有些>60的数字有一位和三位小数。你能解释一下你的逻辑吗?试试x%>%mutate\u all(funs(如果其他(.>60,as.character(round(,1)),))
不知道为什么会有两个**标记。我只是想用粗体显示已更改的元素。让我试着纠正它。简单地说,x[x>60]60],2)
但是你的>60个数字中有些有一位和三位小数。你能解释一下你的逻辑吗?试试x%>%mutate\u all(funs(如果其他(.>60,as.character(round(,1)),))
不知道为什么会有两个**标记。我只是想用粗体显示已更改的元素。让我试着纠正它。只需x[x>60]60],2)
c1 c2 c3 c4 c5 c6
r1 1.000 5.234 7.000 4.0 3 2
r2 2.000 5.000 6.000 1.0 8 3
r3 3.000 6.000 8.000 9.8 1 5
r4 8.000 3.000 4.300 1.0 7 2
r5 1.000 3.100 2.000 9.0 3 5
r6 300.23 4.233 60.19 1.0 5 7