Страница 1 из 1

Фильтр по character

Добавлено: 07 авг 2014, 08:39
Игорь Черниенко
Здравствуйте

Возникло совершенно непонятное для меня затруднение. Мне необходимо выбрать запись в таблице по элементу списка. Значение поля имеет тип character, значения списка тоже. Когда я ссылаюсь на элемент списка, примерно так

df[c.field==lst,]

возвращается пустая строка. Однако, когда я просто копирую это значение в буфер и ставлю его в качестве условия отбора,

df[c.field=="Acropoma japonicum",]

выбираются те строки, которые мне нужны. В чем может быть причина?

Re: Фильтр по character

Добавлено: 07 авг 2014, 11:25
gamm
невозможно понять, где таблица, где список. В любом случае синтаксис вызывает некоторое недоумение - нет ни ссылки на столбец таблицы через $, ни адресации элементов списка через [[ ]] ...

и вообще, есть волшебное средство str(), я бы посмотрел str(lst) и str(lst[]) ...

Re: Фильтр по character

Добавлено: 08 авг 2014, 01:21
Игорь Черниенко
unv.csv
(249 байт) 633 скачивания
fish.csv
(7.05 КБ) 717 скачиваний
Так ведь первым делом и посмотрел.

Код: Выделить всё

>str(unv[1]) 
chr "Acropoma japonicum"

>str(fish[14,'name'])
chr "Acropoma japonicum"
Делал примерно так:

Код: Выделить всё

>fish<-read.table('fish.csv',sep=';',header=T)
>unv<-read.table('unv.csv',sep=';',header=T)

>fish$name<-as.character(fish$name)
>unv<-as.character(unv[,1])
>fish[fish$name==unv[1],]
[1] cod1 fish1 fish2 familie author name 
<0 строк> (или 'row.names' нулевой длины)

>unv[1]
"Acropoma japonicum"

>fish[fish$name=="Acropoma japonicum",]
cod1 fish1 fish2 familie author name
14 10050102 Acropoma japonicum <NA> <NA> Acropoma japonicum

Re: Фильтр по character

Добавлено: 08 авг 2014, 08:26
gamm
строки реально разные, в unv вместо пробела сидит что-то с 16-ричным кодом A0. Разбирайтесь с источником данных и кодировками (первая строка из fish, вторая из unv)
ClipBoard.jpg
ClipBoard.jpg (64.18 КБ) 5589 просмотров

Re: Фильтр по character

Добавлено: 11 авг 2014, 01:28
Игорь Черниенко
В общем, разобраться я так и не разобрался, зато получилось использовать это дело в качестве разделителя :0) Спасибо за помощь