Фильтр по character
- Игорь Черниенко
- Активный участник
- Сообщения: 137
- Зарегистрирован: 28 мар 2009, 01:05
- Репутация: 11
- Откуда: Хабаровск, Южно-Сахалинск
Фильтр по character
Здравствуйте
Возникло совершенно непонятное для меня затруднение. Мне необходимо выбрать запись в таблице по элементу списка. Значение поля имеет тип character, значения списка тоже. Когда я ссылаюсь на элемент списка, примерно так
df[c.field==lst,]
возвращается пустая строка. Однако, когда я просто копирую это значение в буфер и ставлю его в качестве условия отбора,
df[c.field=="Acropoma japonicum",]
выбираются те строки, которые мне нужны. В чем может быть причина?
Возникло совершенно непонятное для меня затруднение. Мне необходимо выбрать запись в таблице по элементу списка. Значение поля имеет тип character, значения списка тоже. Когда я ссылаюсь на элемент списка, примерно так
df[c.field==lst,]
возвращается пустая строка. Однако, когда я просто копирую это значение в буфер и ставлю его в качестве условия отбора,
df[c.field=="Acropoma japonicum",]
выбираются те строки, которые мне нужны. В чем может быть причина?
-
- Гуру
- Сообщения: 4069
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1064
- Ваше звание: программист
- Откуда: Казань
Re: Фильтр по character
невозможно понять, где таблица, где список. В любом случае синтаксис вызывает некоторое недоумение - нет ни ссылки на столбец таблицы через $, ни адресации элементов списка через [[ ]] ...
и вообще, есть волшебное средство str(), я бы посмотрел str(lst) и str(lst[]) ...
и вообще, есть волшебное средство str(), я бы посмотрел str(lst) и str(lst[]) ...
- Игорь Черниенко
- Активный участник
- Сообщения: 137
- Зарегистрирован: 28 мар 2009, 01:05
- Репутация: 11
- Откуда: Хабаровск, Южно-Сахалинск
Re: Фильтр по character
Код: Выделить всё
>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
-
- Гуру
- Сообщения: 4069
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1064
- Ваше звание: программист
- Откуда: Казань
Re: Фильтр по character
строки реально разные, в unv вместо пробела сидит что-то с 16-ричным кодом A0. Разбирайтесь с источником данных и кодировками (первая строка из fish, вторая из unv)
- Игорь Черниенко
- Активный участник
- Сообщения: 137
- Зарегистрирован: 28 мар 2009, 01:05
- Репутация: 11
- Откуда: Хабаровск, Южно-Сахалинск
Re: Фильтр по character
В общем, разобраться я так и не разобрался, зато получилось использовать это дело в качестве разделителя :0) Спасибо за помощь
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей