将r中科学记数法中的逗号替换为点

cur*_*les 3 csv r

我想将使用科学记数法和逗号作为小数分隔符的 csv 文件读取到数据框或向量中。然后我想使用这些数据进行进一步的计算。问题是 R 无法将数据识别为数字。如何将带有逗号的科学记数法转换为带有点的“正确”科学记数法,以便我可以用作数值?

我尝试了以下方法:

mferg_1<-read.csv("file.csv",sep=";",dec=",",header=FALSE)

当我查看数据框时,mferg_1会出现以下内容(摘录):

          V2        V3        V4        V5
14 3,063E+01 1,775E-02 6,641E-07 3,747E-02
Run Code Online (Sandbox Code Playgroud)

gsub我认为我可以使用or替换逗号sub

mferg_1<-sub(",",".",mferg_1)

但接下来mferg_1看起来像这样:

[1] "425" "388" "535" "472"
Run Code Online (Sandbox Code Playgroud)

我担心有一个简单的方法可以解决这个问题,但我还没有找到。

Car*_*lli 7

您的 csv(字符行)中可能有某些内容不允许将列转换为数字,因为该dec = ","参数应该有效。请参阅此示例以及您的数据:

text <- "3,063E+01 1,775E-02 6,641E-07 3,747E-02"
read.table(text=text, dec = ",")
     V1      V2        V3      V4
1 30.63 0.01775 6.641e-07 0.03747
Run Code Online (Sandbox Code Playgroud)

现在,如果您无法识别问题(找到阻止 R 将您的列识别为数字的原因),您可以使用gsub.

df <- read.table(text=text)
df <- sapply(df, gsub, pattern = ",", replacement= ".")
df <- sapply(df, as.numeric)
     V1        V2        V3        V4 
3.063e+01 1.775e-02 6.641e-07 3.747e-02 
Run Code Online (Sandbox Code Playgroud)