【发布时间】:2016-02-04 14:49:45
【问题描述】:
我有一个数字 data.frame,我想通过在每个元素后面粘贴 % 来更改它。
A <- data.frame(A = seq(1,10,1))
apply(A,1, function(x) paste0(A[x,],"%"))
这很好用,但是如果数据有小数位,apply 会将每个条目加倍。
B <- data.frame(B = seq(1,5.5,0.5))
apply(B,1, function(x) paste0(B[x,],"%"))
它适用于dplyr:
require(dplyr)
B %>% mutate(B = paste0(B,"%"))
但我想了解应用解决方案失败的原因。
【问题讨论】:
-
因为您是按值而不是位置进行子集化。试试
B[1.5]看看评估器如何处理十进制子集。 -
试试
apply(B, 1, function(x) paste0(x,"%")) -
@PierreLafortune 有道理,感谢您的解释。