我是R的新手,我将列表转换为数字对象时遇到问题。我有一个像这样的数字列表
0,4484 0,4495 0,4516 0,4526 0,4533 0,4571 0,4592 0,4625 0,4654 0,4671 0,4686 0,4697
我想用这些值制作直方图。我将列表读入R:
x <- read.table(as.matrix('foo.txt', sep='\t', header=F)
并将其作为data.frame读取。当我尝试在该data.frame上使用hist()时,它抱怨它不是数字。要将它转换为数字变量,我这样做了:
as.numeric(c(x[1:1974,])) -> xnum
它变成数字,但是当我查看xnum中的数据时,它看起来像这样
因此,为了提取数字并使用'format'来保留小数位,我试过这个
870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916
我怀疑它是十进制数的问题,并发现'format'函数读取数值,所以我尝试了这个:
format(as.numeric(c(x[1:1974,])), digits=4) -> xnum2
xnum2
然后看起来像这样
“888”“889”“890”“891”“892”“893”“894”“895”“896”“897”“898” “899”“900”“901”“902”“902”“903”“904”“905”“906”“907”“908” “909”“910”“911”“912”“913”“914”“915”“916”
并且不再是数字!
如何将data.frame更改为带小数位的数字对象(为了使用hist()
)?
答案 0 :(得分:4)
看起来你想通了,问题是R期望小数点分隔符是“。”而不是“,”。这样的事情会让你走上正确的道路:
x <- read.table("foo.txt", sep = "\t", dec = ",", header = FALSE)