Ý tưởng ban đầu của bạn gần như chính xác, chỉ biểu thức chính quy là sai, vì .
khớp với bất kỳ biểu tượng nào. Bạn cần một cái gì đó như (điều này sẽ chuyển đổi vector số thành một vector ký tự)
df$a <- gsub("\\.", ",", df$a)
Bạn cũng có thể thay đổi đầu ra từ in R, vẽ và hành động của hàm as.character. Bạn thay đổi nó từ mặc định của nó với:
options(OutDec= ",")
Và tùy chọn khác là sử dụng format
chức năng.
format(df, decimal.mark=",")
Tôi cho rằng bạn quan tâm đến cách thức con số được in (đầu ra), vì trong nội bộ số được lưu giữ như một số dấu chấm động có độ chính xác gấp đôi (Cập nhật nhờ bình luận bằng @digemall). Ngoài ra, trừ khi đối với một số chức năng như read.table
, nó được xác định cụ thể rằng dấu phân cách thập phân là ,
, không thể thực hiện được cách khác, bởi vì theo mặc định ,
được sử dụng để tách đối số hàm.
Và NA
được giới thiệu chính xác vì lý do đó (ngoài regex không chính xác).
df$a <- as.numeric(gsub("\\.", ",", df$a))
Theo trình phân tích cú pháp mặc định không biết rằng ,
được sử dụng làm dấu tách thập phân.
Nguồn
2014-11-26 20:34:44
Bạn có nghĩa là bạn vẫn muốn các giá trị số, nhưng bạn muốn '.' là', '? –
Chính xác. Điều đó có thể không? –
Phần Lan (Phần Lan). Và dấu phân cách thập phân là dấu phẩy. –