Tôi đang cố gắng thực hiện một chức năng cho gói cho phép người dùng đọc dữ liệu mà không có dấu ngoặc kép. Nó hoạt động gần như mong đợi ngoại trừ chức năng biến 3.30 thành 3.3 mặc dù đầu ra cuối cùng là ký tự. Làm thế nào tôi có thể nhận được chức năng của tôi để đọc trong các yếu tố đó là con số nhưng không phải để thả số không dấu. Ý tưởng bức tranh lớn là:Không thả số không trong chuỗi chưa được trích dẫn làm đối số
- chức năng mà đọc yếu tố mà không sử dụng dấu ngoặc kép
- chức năng sẽ không loại bỏ những gì R coi số không không quan trọng
- mặc dù các yếu tố có thể nhìn số tôi muốn họ được outputted như nhân vật yếu tố
Dưới đây là hai nỗ lực và những gì họ đặt ra (một nỗ lực với substitute(...())
và khác với 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"
Với dấu ngoặc kép nó ra những gì tôi muốn nhưng điều này đánh bại mục đích của việc không phải cung cấp dấu ngoặc kép:
fun('3.30', '5.05')
> fun('3.30', '5.05')
[1] "3.30" "5.05"
PS nếu ai đó có một tiêu đề tốt hơn cho chủ đề này cảm thấy tự do để chỉnh sửa
Bingo. Đây là tất cả những gì tôi có thể nghĩ đến, và nó sẽ hỏng nếu lệnh gọi 'fun()' kéo dài trên hai hoặc nhiều dòng, hoặc nếu một trong các đối số ký tự chứa dấu phẩy, hoặc nếu 'fun()' được gọi bởi một hàm khác hoặc ... Câu trả lời vẫn rất hay! –
Ấn tượng Cảm ơn bạn +1 –