В R dplyr, почему после спреда стоит одинарная кавычка? - PullRequest
2 голосов
/ 04 июня 2019

Я пытаюсь разбить столбец на несколько столбцов, используя функцию распространения dplyr. После распространения доступ к столбцу имеет единственную кавычку, которую я хочу удалить, поскольку она препятствует моей фильтрации кадра данных

Ниже мой код

# Create Test Frame
testframe = data.frame(name = c("foo-tt.0","bar-tt.0","dd-tt.0","tt-tt.0"),age=as.numeric(c(40,38,10,8)))
#Pivot using name
testframe_pivot <- testframe %>% spread(name,age)

Мне нужно получить доступ к кадру, как показано ниже

testframe_pivot$`bar-tt.0` ## I don't want these quotes
[1] 38

Почему я не могу получить, как (ОЖИДАЕМЫЙ ВЫХОД)

> testframe_pivot$bar-tt.0
[1] 38

вместо этого я получаю

> testframe_pivot$bar-tt.0
Error: object 'tt.0' not found

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

Следствие это ..

>name_I_want = c("foo-tt.0")

>select_(testframe_pivot,.dot=name_I_want)
Error in .f(.x[[i]], ...) : object 'foo' not found

1 Ответ

2 голосов
/ 04 июня 2019

Проблема с именами - знак -. Если вы не избавитесь от этого, вы не сможете использовать оператор $ без обратных тиков. Есть два варианта с base-R:

Либо вы исправляете имена к чему-то синтаксически правильному для R. make.names хорошо работает:

names(testframe_pivot) <- make.names(names(testframe_pivot))
testframe_pivot
#  bar.tt.0 dd.tt.0 foo.tt.0 tt.tt.0
#1       38      10       40       8

Или подмножество с [[ и строками:

testframe_pivot[['bar-tt.0']]
#[1] 38
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...