将gsub应用于各种列

Ric*_*ard 12 r gsub dataframe

应用于gsub各种列的最有效方法是什么?以下不起作用

x1=c("10%","20%","30%")
x2=c("60%","50%","40%")
x3 = c(1,2,3)
x = data.frame(x1,x2,x3)
per_col = c(1,2)
x = gsub("%","",x[,per_col])
Run Code Online (Sandbox Code Playgroud)

如何最有效地删除指定列中的"%"符号.我可以将它应用于整个数据框吗?在我不知道列百分比在哪里的情况下,这将非常有用.

tal*_*lat 9

您可以使用apply它将其应用于整个data.frame

apply(x, 2, function(y) as.numeric(gsub("%", "", y)))
     x1 x2 x3
[1,] 10 60  1
[2,] 20 50  2
[3,] 30 40  3
Run Code Online (Sandbox Code Playgroud)

  • 警告:`apply()` 返回一个矩阵而不是一个 `data.frame`。 (2认同)

inf*_*keR 7

或者,您可以尝试lapply解决方案:

as.data.frame(lapply(x, function(y) gsub("%", "", y)))

  x1 x2 x3
1 10 60  1
2 20 50  2
3 30 40  3
Run Code Online (Sandbox Code Playgroud)