r - 有没有办法使用 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
..
..
先谢谢啦~
解决方案
我们可以用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))
推荐阅读
- android-studio - 如何在 Android Studio 中正确导入新模块
- android - 如何从接口中的方法返回 Observable 类型的对象
- leaflet - 有没有办法通过传单地图获得飞行效果?
- angular - 如何在Angular中将()=>数字转换为数字
- corda - 如何使用我自己的 Corda 分支构建 CordApp?
- gitlab - 限制 gitlab-ci 中的阶段分叉项目(使用自动 devops)
- cron - 调度程序的 Cron 表达式
- c++ - Cap'n Proto - 如何编译生成的 C++ 文件
- java - 将缓冲区直接发送到智能卡
- python - 为什么 gdal.translate 不接受第三个参数?