2015-03-19 3 views
1

Я пытаюсь использовать GSUB на каждом столбе dataframe удалить некоторые символы, я попытался с помощью применить, чтобы сделать это без успеха:GSUB применять комбинацию в R

data<-apply(data,2, function(x) gsub("£","",data[x])) 

возвращает ошибку

Error in `[.data.frame`(data, x) : undefined columns selected 

Я знаю, что это работает, если я

for(i in 1: length(data)){data[,i]<-gsub("£","",data[,i]) } 

Но почему не применить работу вызова?

+1

'1' в' apply' для операций с строками ... для столбцов вы должны использовать '2'. В любом случае, для операций столбцов 'lapply' или' sapply' являются предпочтительными. –

+0

Попробуйте 'data [] <- lapply (data, function (x) gsub (" £ "," ", x))'. – Roland

+0

@ Роланд хорошая идея, плохое имя. данные являются функцией, таким образом, вы получите ошибку «закрытие не подмножество». –

ответ

3

Вот следующий лучший воспроизводимый пример. Хотя может быть лучше/быстрее (векторизованный) способ, если я подумал немного сложнее. Но так как вы просили подать заявку:

# just turn it to characters in order to 
# turn . to , ... was just the first dataset that came to 
# but as character should not be necessary for your data 
ds[] <- sapply(mtcars,function(x) gsub("\\.",",",as.character(x))) 
Смежные вопросы