首页 文章

将带有十进制数的列表更改为数字

提问于
浏览
0

我是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中的数据时,它看起来像这样

因此,为了提取数字并使用'格式'来保持小数位,我尝试了这个

870 871 872 873 874 875 876 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() )?

1 回答

  • 4

    看起来你想通了,问题是R期望小数分隔符为“ . ” . 而不是“,” . 这样的事情会让你走上正确的道路:

    x <- read.table("foo.txt", sep = "\t", dec = ",", header = FALSE)
    

相关问题