2015-09-03 1 views
0

У меня есть две строки кода в R, которые в теории должны делать то же самое я хочу, чтобы использовать их, чтобы установить значение в столбцеR: Вставить столбец dataframe для grepl

a <- paste(ref.dg.safe[,'safewords'], collapse="|") 
"c(\"NO BATTERIES\", \"COSTUME\", \"CABLE\", \"BAG\", \"CLOTHING\)" 

b <- paste(ref.dg.safe$safewords, collapse="|") 
NO BATTERIES|COSTUME|CABLE|BAG|CLOTHING| 

Я хочу второй выход, используя первую строку кода, потому что я получаю частичную ошибку совпадения, когда я использую «Ъ» в функции

Я хотел бы понять, почему выходы настолько различны

UPDATE:

Первоначально я импортирован набор данных с использованием линии

ref.dg.safe <- unique(tbl_df(read.csv("~/Projects/foo_project/REF_SafeList.txt", sep = "\t", as.is = TRUE, strip.white=TRUE))) 

dput выглядит

structure(list(safewords = c("NO BATTERIES", "COSTUME", "CABLE", 
"BAG", "CLOTHING", "BRACELET", "FAUCET", "IRON", "CASE", "NO BATTERY", 
"BELT", "JACKET", "CONVERTER", "HAIR", "GLASS", "SHOE", "ROUTER", 
"LABEL", "ADAPTOR", "SILICONE", "EARPHONE", "SPONGE", "WOOD", 
"TANKTOP", "WALLET", "TUBE", "TRIPODS", "STONE", "LAMP", "HEADPHONES", 
"COOKIECUTTERS", "CONVERTERS", "COWLEATHER", "INFLATABLETOY", 
"HEADPHONE", "LABLE", "ROMPER", "POLE", "PROBE", "FIBEROPTIC", 
"APRON", "TABLECLOTH", "AVR", "TABLEBASE", "DESK", "BEAUTYGOODS", 
"SEAT", "NOBATTERIES", "SHEOS", "CHARGERS", "STAPLER", "SATCHEL" 
)), .Names = "safewords", class = c("tbl_df", "data.frame"), row.names =  c(NA, 
-52L)) 
+0

Может быть, вы можете сделать его немного проще для нас ответить на ваш вопрос: использование 'dput (ref.dg.safe)' в R дает вам код, который вы можете сбросить здесь, что позволяет нам восстанавливать ваши данные за считанные секунды. – Jaap

+0

С предоставленными данными я получаю тот же результат для 'a' и' b'. – Jaap

+0

странно ... я все равно получаю разные типы значений. Я нашел работу. Если я использую код a <- paste (unlist (ref.dg.safe [, 'safewords']), collapse = "|"), он даст мне то, что им нужно. Спасибо @Jaap за ваше время, это помогло –

ответ

4

Чтобы ответить, почему:

> class(df[,"safewords"]) 
[1] "tbl_df"  "data.frame" 
> class(df$safewords) 
[1] "character" 

Это связано с тем, как [ и $ операторы работают и как они принуждают свое возвращение или нет (я не понимаю, как это обобщить, посмотрите на документы на data.frame и подмножество операторов).

Обойти делаете первую форма разрешит это data.frame статуса с unlist, как это:

> paste(unlist(df[,"safewords"]),collapse="|") 
[1] "NO BATTERIES|COSTUME|CABLE|BAG|CLOTHING|BRACELET[...]" 

Я удалил часть вывода, чтобы сохранить его для чтения здесь

+0

Спасибо @Tensibai –

+1

@ Tensibai unlist() - это функция, которую мне нужно было преобразовать из tbl_df в символ – hackR

+0

@hackR рад, что это помогло;) – Tensibai

 Смежные вопросы

  • Нет связанных вопросов^_^