我有以下数据和代码来对这些数据的选定列进行四舍五入.表:

> dput(mydf)
structure(list(vnum1 = c(0.590165705411504, -1.39939534199836, 
0.720226053660755, -0.253198380120377, -0.783366825121657), vnum2 = c(0.706508400384337, 
0.526770398486406, 0.863136084517464, 0.838245498016477, 0.556775856064633
), vch1 = structure(c(2L, 4L, 1L, 3L, 3L), .Label = c("A", "B", 
"C", "E"), class = "factor")), .Names = c("vnum1", "vnum2", "vch1"
), row.names = c(NA, -5L), class = c("data.table", "data.frame"
))

> mydf[,round(.SD,1),]
Error in Math.data.frame(list(vnum1 = c(0.590165705411504, -1.39939534199836,  : 
  non-numeric variable in data frame: vch1

> cbind(mydf[,3,with=F], mydf[,1:2,with=F][,round(.SD,1),])
   vch1 vnum1 vnum2
1:    B   0.6   0.7
2:    E  -1.4   0.5
3:    A   0.7   0.9
4:    C  -0.3   0.8
5:    C  -0.8   0.6

有没有更好的方法(代码更短)?谢谢你的帮助.

推荐答案

如果您不介意覆盖原来的mydf:

cols <- names(mydf)[1:2]
mydf[,(cols) := round(.SD,1), .SDcols=cols]
mydf

#   vnum1 vnum2 vch1
#1:   0.6   0.7    B
#2:  -1.4   0.5    E
#3:   0.7   0.9    A
#4:  -0.3   0.8    C
#5:  -0.8   0.6    C

R相关问答推荐

R中的Fasttext langue_identification返回太多参数-如何与文本匹配?

Select R中列未排序的收件箱中的最后一个按顺序编号的列

带有gplot 2的十字舱口

在R底座中更改白天和夜晚的背景 colored颜色

如何求解arg必须为NULL或deSolve包的ode函数中的字符向量错误

名称输出pmap on tible

从开始时间和结束时间导出时间

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

非线性混合效应模型(NLME)预测变量的置信区间

通过在colname中查找其相应值来创建列

plotly hover文本/工具提示在shiny 中不起作用

如何从容器函数中提取conf并添加到ggplot2中?

根据1个变量绘制 colored颜色 发散的 map ,由另一个变量绘制饱和度,ggplot2不工作

将选定的索引范围与阈值进行比较

按组计算列中1出现的间隔年数

在R中,如何将误差条放置在堆叠的每个条上?

在点图上绘制置信度或预测区间ggplot2

将摘要图添加到facet_WRAP gglot的末尾

如何在条形图中的x和填充变量中包含多个响应变量?

填充图例什么时候会有点?