Próbuję wykonać funkcję dla pakietu, który umożliwia użytkownikowi odczyt w danych bez cudzysłowów. Działa niemal zgodnie z oczekiwaniami, z wyjątkiem tego, że funkcja zamienia 3,30 na 3.3, nawet jeśli ostateczne wyjście jest charakterystyczne. W jaki sposób mogę uzyskać funkcję odczytu w elementach będących liczbami, ale nie po to, aby znikały końcowe zera. Obraz wielka idea jest:Nie upuszczaj zera w niecytowanym łańcuchu jako argument
- funkcja, która odczytuje elementów bez użycia cudzysłowu
- funkcja nie będzie wyrzucić co R uważa nieistotnych zer
- chociaż elementy mogą wyglądać numeryczny chcę, żeby być wyprowadzane jako znak Elements
Oto dwie próby i to, co na zewnątrz put (jedna próba z substitute(...())
a drugi z match.call(expand.dots = FALSE)
:
#attempt #1
fun <-
function(...){
substitute(...())
}
fun(3.30, 5.05)
#dropped zero on 3:30 (not what I want)
> fun(3.30, 5.05)
[1] "3.3" "5.05"
#attempt #2
fun <-
function(...){
x <- match.call(expand.dots = FALSE)
as.character(x[[2]])
}
fun(3.30, 5.05)
#again dropped zero on 3:30 (not what I want)
> fun(3.30, 5.05)
[1] "3.3" "5.05"
Z cudzysłowu wyprowadza co chcę, ale to pokonuje cel nie mający zapewnić cudzysłów:
fun('3.30', '5.05')
> fun('3.30', '5.05')
[1] "3.30" "5.05"
PS Jeśli ktoś ma lepszy tytuł dla tego wątku czuje swobodnie edytować
Bingo - to wszystko, o czym mógłbym pomyśleć, i to się zepsuje, jeśli wywołanie funkcji "fun()" rozciąga się na dwie lub więcej linii, lub jeśli jeden z argumentów znaków zawiera przecinek, lub jeśli fun() 'jest wywoływana przez inną funkcję lub ... Wciąż bardzo miła odpowiedź! –
Imponująca Dziękuję +1 –