2016-07-26 2 views
-1

У меня есть кадр данных, ниже которого включены регулярное выражение и числа, и я хочу удалить символ за значением EE. однако gsub или вспомогательный вывод - это вектор, а не кадр данных.R gsub удалить шаблон и вернуть формат кадра данных

вход:

C01 C02 C03 C04 C05 C06 C07 C08 
98 EE|0.3302 EE|0.3302 EE|0.3302 EE|0.3302 EE|0.3302 EE|0.3302 EE|0.3302 EE|0.3302 
99 EE|0.4050 EE|0.4050 EE|0.4050 EE|0.4050 EE|0.4050 EE|0.3818 EE|0.4050 EE|0.4050 
100 EE|0.2199 EE|0.0000 EE|0.2199 EE|0.2176 EE|0.2199 EE|0.2199 EE|0.2199 EE|0.2199 
102 EE|0.3449 EE|0.3449 EE|0.3449 EE|0.3449 EE|0.3449 EE|0.3449 EE|0.3449 EE|0.3449 
105 EE|0.6669 EE|0.6669 EE|0.6669 EE|0.6669 EE|0.6669 EE|0.6669 EE|0.6669 EE|0.6669 
107 EE|0.8352 EE|0.8352 EE|0.8352 EE|0.8352 EE|0.8352 EE|0.8352 EE|0.8352 EE|0.8352 
108 EE|0.4309 EE|0.4309 EE|0.4309 EE|0.4309 EE|0.4309 EE|0.4309 EE|0.4309 EE|0.4309 
109 EE|0.5634 EE|0.5634 EE|0.5634 EE|0.5634 EE|0.5634 EE|0.5634 EE|0.5634 EE|0.5634 
110 EE|0.5969 EE|0.5969 EE|0.5969 EE|0.5969 EE|0.5969 EE|0.5969 EE|0.5969 EE|0.5969 
111 EE|0.6486 EE|0.6486 EE|0.6486 EE|0.6486 EE|0.6486 EE|0.6486 EE|0.6486 EE|0.6486 
112 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 
113 EE|0.3770 EE|0.3770 EE|0.3770 EE|0.3770 EE|0.3770 EE|0.3770 EE|0.3770 EE|0.3770 
114 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 
115 EE|0.3218 EE|0.3218 EE|0.3218 EE|0.3218 EE|0.3218 EE|0.3218 EE|0.3218 EE|0.3218 
116 EE|0.6402 EE|0.6402 EE|0.6402 EE|0.6402 EE|0.6402 EE|0.6402 EE|0.6402 EE|0.6402 
120 EE|0.2944 EE|0.2944 EE|0.2944 EE|0.2944 EE|0.2944 EE|0.2944 EE|0.2944 EE|0.2944 
121 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 EE|0.3616 

выход:

C01 C02 C03 C04 C05 C06 C07 C08 
98 EE EE EE EE EE EE EE EE 
99 EE EE EE EE EE EE EE EE 
100 EE EE EE EE EE EE EE EE 
102 EE EE EE EE EE EE EE EE 
105 EE EE EE EE EE EE EE EE 
107 EE EE EE EE EE EE EE EE 
108 EE EE EE EE EE EE EE EE 
109 EE EE EE EE EE EE EE EE 
110 EE EE EE EE EE EE EE EE 
111 EE EE EE EE EE EE EE EE 
112 EE EE EE EE EE EE EE EE 
113 EE EE EE EE EE EE EE EE 
114 EE EE EE EE EE EE EE EE 
115 EE EE EE EE EE EE EE EE 
116 EE EE EE EE EE EE EE EE 
120 EE EE EE EE EE EE EE EE 
121 EE EE EE EE EE EE EE EE 
+3

'Дат [] <- lapply (DAT, GSUB, шаблон = "yourpattern", замена = "")' ' – dayne

+2

библиотека (dplyr); df%>% mutate_all (sub, pattern = '\\ |. *', replacement = '') 'или' df%>% mutate_all (funs (sub ('\\ |. *', '',.))) ' – alistaire

+0

' dat [] <- sub ("\\ |. * $", "", As.matrix (dat)) ' – Jota

ответ

3

Мы можем цикл по столбцам и использовать sub, чтобы соответствовать шаблону, который начинается с \\| с последующим одним или более символов (.*) и заменить он с пробелом ('').

df1[] <- lapply(df1, sub, pattern = "\\|.*", replacement = "") 
df1 
#  C01 C02 C03 C04 C05 C06 C07 C08 
#98 EE EE EE EE EE EE EE EE 
#99 EE EE EE EE EE EE EE EE 
#100 EE EE EE EE EE EE EE EE 
#102 EE EE EE EE EE EE EE EE 
#105 EE EE EE EE EE EE EE EE 
#107 EE EE EE EE EE EE EE EE 
#108 EE EE EE EE EE EE EE EE 
#109 EE EE EE EE EE EE EE EE 
#110 EE EE EE EE EE EE EE EE 
#111 EE EE EE EE EE EE EE EE 
#112 EE EE EE EE EE EE EE EE 
#113 EE EE EE EE EE EE EE EE 
#114 EE EE EE EE EE EE EE EE 
#115 EE EE EE EE EE EE EE EE 
#116 EE EE EE EE EE EE EE EE 
#120 EE EE EE EE EE EE EE EE 
#121 EE EE EE EE EE EE EE EE 
Смежные вопросы