在很多列中应用和运行 gsub

Apply and function a gsub in a lots of columns

我是 R 的新手,我想在名为 x 的数据框中的第 6 列到第 12 列中应用 gsub 函数。但是,我有点卡住了。我开始使用:

gsub("\.", "",x[,c(6:12)])

但是它只返回了几行。 然后,我尝试使用这个:

x1<-apply(x,c(6:12),function(x) gsub("\.", "",x))

但是我得到了以下错误:

Error in if (d2 == 0L) { : missing value where TRUE/FALSE needed

也试过这个:

for (i in x[,c(6:12)]) 
{a<-data.frame(gsub("\.", "",i))}

有人有提示或解决方案吗? 如果有人向我展示如何使用 apply 函数和 for.

也会很棒

这是另一种解决方案。它returns原始数据框的所有列

library(dplyr)
mutate_at(x, 6:12, gsub("\.", "", .))

这里有一个data.table方式的解决方案。当table很大并且时间是一个关键因素时值得考虑。

library(data.table)     # load library
x = as.data.table(x)    # convert data.frame into data.table
cols = names(x)[6:12]   # define which columns to work with
x[ , (cols) := lapply(.SD, function(x) {gsub("\.", "", x)}), .SDcols = cols] # replace
x # enjoy results

使用评论中的 apply 添加解决方案,因为这个确实帮助了我:

x1 <- apply(x[,6:12], 2, function(x) gsub("\.", "",x))