首页 > 解决方案 > 有没有办法使用 R 计算列中的单个方程?

问题描述

我有一个数据框,其中有一个列名 Rooms,它包含房子里的房间数量。它有大约 50,000 多行,我使用它进行了检查str(df$Rooms),它是一个有 44 个级别的因素。该列如下所示:

>str(df$Rooms)
Factor w/ 44 levels "","1","1+1","1+2",..: 20 32 23 27 28 29 27 23 26 24 ...

> df$Rooms
1+2
3
1+3
1+2
4
3
1+1
2
..
..

我的问题是 R 中有任何方法或任何函数或库可用于获取这些方程的值。也许这样它就可以变成这样:

 > df$Rooms
    3
    3
    4
    3
    4
    3
    2
    2
    ..
    ..

先谢谢啦~

标签: rdataframe

解决方案


我们可以用eval parse

df$final_rooms <- sapply(as.character(df$Rooms), function(x) eval(parse(text = x)))
df

#  Rooms final_rooms
#1   1+2           3
#2     3           3
#3   1+3           4
#4   1+2           3
#5     4           4
#6     3           3
#7   1+1           2
#8     2           2

数据

df <- structure(list(Rooms = structure(c(2L, 5L, 3L, 2L, 6L, 5L, 1L, 
4L), .Label = c("1+1", "1+2", "1+3", "2", "3", "4"), class = "factor")), 
class = "data.frame", row.names = c(NA, -8L))

推荐阅读