Trong quá trình (chủ yếu) trả lời câu hỏi this, tôi tình cờ gặp một điều gì đó mà tôi cảm thấy như tôi thực sự đã thấy trước đây. Hãy nói rằng bạn đã có một danh sách:Tại sao hành vi này khi co một danh sách đến ký tự thông qua as.character()?
l <- list(a = 1:3, b = letters[1:3], c = runif(3))
Cố gắng ép buộc l
với các loại hình trả về một lỗi:
> as.numeric(l)
Error: (list) object cannot be coerced to type 'double'
> as.logical(l)
Error: (list) object cannot be coerced to type 'logical'
Tuy nhiên, tôi dường như được phép ép buộc một danh sách để nhân vật, tôi chỉ không ngờ kết quả này:
> as.character(l)
[1] "1:3"
[2] "c(\"a\", \"b\", \"c\")"
[3] "c(0.874045701464638, 0.0843329173512757, 0.809434881201014)"
Thay vào đó, nếu tôi được phép ép buộc danh sách để nhân vật, tôi đã có thể nghĩ rằng tôi muốn xem hành vi như thế này:
01.> as.character(unlist(l))
[1] "1" "2" "3" "a" "b"
[6] "c" "0.874045701464638" "0.0843329173512757" "0.809434881201014"
Lưu ý rằng làm thế nào tôi xác định các yếu tố danh sách ban đầu ảnh hưởng đến đầu ra của as.character
:
l <- list(a = c(1,2,3), b = letters[1:3], c = runif(3))
> as.character(l)
[1] "c(1, 2, 3)"
[2] "c(\"a\", \"b\", \"c\")"
[3] "c(0.344991483259946, 0.0492411875165999, 0.625746068544686)"
Tôi có hai câu hỏi:
- như thế nào
as.character
nạo vét lên các thông tin từ tôi tạo bản gốc của danh sáchl
để nhổ ra1:3
so vớic(1,2,3)
. - Trong trường hợp nào tôi muốn làm điều này, chính xác? Khi nào tôi muốn gọi
as.character()
trên danh sách và nhận kết quả đầu ra của biểu mẫu này?
Aha,' deparse' dường như giải thích nhiều câu hỏi đầu tiên của tôi. – joran