我在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.numeric
和colClasses="numeric"
。要重新创建此功能,只需制作包含=concatenate("-5*3")
等公式的电子表格即可。我该怎么扭转这个?感谢。
链接到dput(head(week15_90))
的输出
https://docs.google.com/document/d/1xCVjSff6f055PX8qEnVLh49V6TYXFQeZZzc3bofG5z4/edit?usp=sharing
答案 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的元素是字符串而不是因子 - 如果它们是您必须转换它们的因素。