首先,将您的数据作为字符串向量导入。在问题中使用您的玩具示例,我们可以通过
txt = "1, 2, 3, 0.3, 2/5, 0.75, 1/3"
dat = read.table(text = txt, sep = ",", stringsAsFactors = F)
一旦您将数据放入字符向量中,我们就可以使用eval(parse()) 来评估表达式,就好像它们是在控制台中输入的一样。不幸的是,eval 没有矢量化,所以我们将它包装在 sapply 中,依次将此函数应用于数据的每个元素
answer = sapply(dat, function(x) eval(parse(text = x)))
我们可以通过将上述方法一次应用于每一列来扩展它以处理多行数据。比如像这样
txt = "col1name, col2name, col3name, col4name
1, 2, 3, 4
0.5, 0.6, 0.7, 0.8
1/2, 2/3, 3/4, 4/5
1, 0.2, 3/3, 4"
dat = read.table(text = txt, sep = ",", stringsAsFactors = F, header = T)
answer = apply(dat, 2, function(this.col) sapply(this.col, function(x) eval(parse(text = x))))
# col1name col2name col3name col4name
# [1,] 1.0 2.0000000 3.00 4.0
# [2,] 0.5 0.6000000 0.70 0.8
# [3,] 0.5 0.6666667 0.75 0.8
# [4,] 1.0 0.2000000 1.00 4.0