【发布时间】:2018-02-23 20:14:04
【问题描述】:
我正在尝试将存储为分数形式的字符的数字数据帧转换为以十进制形式存储的数字。 (还有一些整数,也存储为 char。)我想保留数据框的当前结构,即我不想要一个列表作为结果。
示例数据框(注意:真实数据框将所有元素都作为字符,这是一个因素,但我不知道如何复制带有字符的数据框):
a <- c("1","1/2","2")
b <- c("5/2","3","7/2")
c <- c("4","9/2","5")
df <- data.frame(a,b,c)
我试过df[] <- apply(df,1, function(x) eval(parse(text=x)))。这会正确计算数字,但仅适用于最后一列,并用它填充数据框。
结果:
a b c
1 4 4.5 5
2 4 4.5 5
3 4 4.5 5
我也试过df[] <- lapply(df, function(x) eval(parse(text=x))),结果如下(我也不知道为什么):
a b c
1 3 3 2
2 3 3 2
3 3 3 2
想要的结果:
a b c
1 1 2.5 4
2 0.5 3 4.5
3 2 3.5 5
非常感谢!
【问题讨论】:
标签: r dataframe apply lapply fractions