将 paste() 应用于 data.frame
Applying paste() to a data.frame
我有一个数字 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,"%"))
但我想了解为什么应用解决方案失败。
你可以试试
sapply(B,paste0,"%")
由于 OP 中的数据框示例由单个向量组成,因此可能有助于证明这适用于一般数据框:
B <- data.frame(x1 = seq(1,10,1), x2=seq(1,5.5,0.5))
sapply(B,paste0,"%")
# x1 x2
# [1,] "1%" "1%"
# [2,] "2%" "1.5%"
# [3,] "3%" "2%"
# [4,] "4%" "2.5%"
# [5,] "5%" "3%"
# [6,] "6%" "3.5%"
# [7,] "7%" "4%"
# [8,] "8%" "4.5%"
# [9,] "9%" "5%"
#[10,] "10%" "5.5%"
我有一个数字 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,"%"))
但我想了解为什么应用解决方案失败。
你可以试试
sapply(B,paste0,"%")
由于 OP 中的数据框示例由单个向量组成,因此可能有助于证明这适用于一般数据框:
B <- data.frame(x1 = seq(1,10,1), x2=seq(1,5.5,0.5))
sapply(B,paste0,"%")
# x1 x2
# [1,] "1%" "1%"
# [2,] "2%" "1.5%"
# [3,] "3%" "2%"
# [4,] "4%" "2.5%"
# [5,] "5%" "3%"
# [6,] "6%" "3.5%"
# [7,] "7%" "4%"
# [8,] "8%" "4.5%"
# [9,] "9%" "5%"
#[10,] "10%" "5.5%"