r - 在 R 中使用循环计算
问题描述
考虑以下数据框:
x1 <- matrix(c(100,200,300,500),ncol=1,dimnames=list(LETTERS[1:4],"x"))
y1 <- matrix(c(75,100,300,400),ncol=1,dimnames=list(LETTERS[1:4],"y"))
datamichael <- data.frame(x1,y1)
x2 <- matrix(c(200,50,200,600),ncol=1,dimnames=list(LETTERS[1:4],"x"))
y2 <- matrix(c(100,100,400,300),ncol=1,dimnames=list(LETTERS[1:4],"y"))
dataewan <- data.frame(x2,y2)
x3 <- matrix(c(100,150,400,200),ncol=1,dimnames=list(LETTERS[1:4],"x"))
y3 <- matrix(c(100,100,400,300),ncol=1,dimnames=list(LETTERS[1:4],"y"))
datatom <- data.frame(x3,y3)
我通过以下方式合并了这三个 data.frame:
datamichaeldataewan <- rbind(datamichael,dataewan)
datamichaeldatatom <- rbind(datamichael,datatom)
通过使用包Benchmarking
我想进行以下计算:
library(Benchmarking)
effmichaelewan <- dea(data.frame(datamichaeldataewan[1]),
data.frame(datamichaeldataewan[2]),
RTS="crs", ORIENTATION="out",
XREF=datamichael$x1, YREF=datamichael$y1)
effmichaeltom <- dea(data.frame(datamichaeldatatom[1]),
data.frame(datamichaeldatatom[2]),
RTS="crs", ORIENTATION="out",
XREF=datamichael$x1, YREF=datamichael$y1)
就我而言,问题是我有两个以上合并的data.frame。那么是否可以通过使用循环进行上述计算?重要的是输出变量的名称是“eff[name-after-first-data][name-after-second-data]”。而且:datamichaeldataewan
每次计算中的变化:
dea(data.frame(datamichaeldataewan[1]),
data.frame(datamichaeldataewan[2]),
RTS="crs", ORIENTATION="out",
XREF=datamichael$x1, YREF=datamichael$y1)
解决方案
如果您将合并的数据框存储在列表中,则可以轻松重写。
dataframe
将 s 存储在 a中list
并rbind
使用datamichael
using lapply
:
datalist <- list(dataewan = dataewan, datatom = datatom)
datalist <- lapply(datalist, function(x) rbind(datamichael, x))
names(datalist) <- paste0("datamichael", names(datalist))
计算结果lapply
:
efflist <- lapply(datalist, function(x)
dea(data.frame(x[1]), data.frame(x[2]), RTS="crs", ORIENTATION="out",
XREF=datamichael$x1, YREF=datamichael$y1))
names(efflist) <- paste0("eff", gsub("data", "", names(efflist)))
efflist
# $effmichaelewan
# A B C D A1 B1 C1 D1
# 2.667 4.000 2.000 2.500 4.000 1.000 1.000 4.000
#
# $effmichaeltom
# A B C D A1 B1 C1 D1
# 2.000 3.000 1.500 1.875 1.500 2.250 1.500 1.000
推荐阅读
- reactivemongo - 警告超时连接后,带有 Cluster DocumentDB 的 ReactiveMongo 引发内部服务器错误
- r - R中for循环后数据帧没有区别
- c# - 检查目标上是否存在所有必需的 DLL 及其依赖项
- javascript - 在 mongoDB 中,如何获取使用 insertOne() 使用 async / await 创建的对象的 id?
- python - 将 RS232 连接到串行并从 python 脚本建立到 Nextion 显示器的连接
- django - 如何制作一个简单的rest-framework示例?
- ios - 如何在颤动中弹出到特定屏幕
- javascript - 如何以角度设置默认输入值
- c - 当浮点数是函数的实际参数时,为什么我的计算机会任意更改浮点数末尾的小数位?
- amazon-web-services - 由于 S3Bucket 资源已存在,Cloudformation 模板失败