如何在R中将文本字符串导入为数字?

时间:2013-12-27 03:12:37

标签: r excel

我在Excel中使用concatenate创建了一个电子表格,以便以后使用。现在我想评估文本字符串。在Excel中执行它听起来比在R中执行它更难。因此,我想知道如何在R中导入和评估。而不是我想要的,我得到如下文本字符串。

     Air.Force.Falcons           Akron.Zips Alabama.Crimson.Tide
1       -.8*2-(1-.8)*1 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2
2 -.5*0+(0)*(2*.8-1)/2       -.8*2-(1-.8)*1 -.5*0+(0)*(2*.8-1)/2
3 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2       -.8*0-(1-.8)*2
4 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2
5 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2
6 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2
7 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2 -.5*0+(0)*(2*.8-1)/2

如何将它们作为数字导入或在事后评估为数字?我试过了as.numericcolClasses="numeric"。要重新创建此功能,只需制作包含=concatenate("-5*3")等公式的电子表格即可。我该怎么扭转这个?感谢。

链接到dput(head(week15_90))的输出 https://docs.google.com/document/d/1xCVjSff6f055PX8qEnVLh49V6TYXFQeZZzc3bofG5z4/edit?usp=sharing

2 个答案:

答案 0 :(得分:3)

更快地取消首先取消数据(将其作为向量),然后应用经典eval(parse(text=))

matrix(lapply(unlist(dat),
       function(y)eval(parse(text=y))),ncol=ncol(dat))

示例:

dat <- data.frame( x=rep("-x+1",2) ,y =rep("x^2",2),stringsAsFactors=F)
> dat
     x   y
1 -x+1 x^2
2 -x+1 x^2

x <- 0.2
matrix(lapply(unlist(dat),function(y)
                         eval(parse(text=y))),ncol=ncol(dat))
     [,1] [,2]
[1,]  0.8 0.04
[2,]  0.8 0.04

答案 1 :(得分:2)

data.frame(lapply(df, function(y) sapply(y, function(x) eval(parse(text=x)))))

应该这样做。

确保数据框df的元素是字符串而不是因子 - 如果它们是您必须转换它们的因素。