R 循环更改为矩阵,然后运行测试

R 循环更改为矩阵,然后运行测试,r,loops,R,Loops,我有一个数据框,里面有大约9000行人类编码的数据,每个项目有两个编码员,所以大约有4500对独特的数据对。我想把数据集分成每一对,这样大约4500个数据帧,对分配的分数运行kripp.alpha,然后将它们保存到我制作的编码表中。我无法让循环工作以完成此操作 我可以使用以下方法使其单独工作: example.m <- as.matrix(example.m) s <- kripp.alpha(example.m) example$alpha <- s$value examp

我有一个数据框,里面有大约9000行人类编码的数据,每个项目有两个编码员,所以大约有4500对独特的数据对。我想把数据集分成每一对,这样大约4500个数据帧,对分配的分数运行kripp.alpha,然后将它们保存到我制作的编码表中。我无法让循环工作以完成此操作

我可以使用以下方法使其单独工作:

example.m <- as.matrix(example.m)
s <- kripp.alpha(example.m)
example$alpha <- s$value

example.m当通过字符串引用对象时,您的问题在于范围和从对象中提取名称。您需要
eval()
您的一些对象才能使当前的方法起作用

这里有另一个解决方案

library("irr") # For kripp.alpha

# Produce the data
l <- as.data.frame(matrix(c(4,3,3,3,1,1,3,3,3,3,1,1),nrow=2))
t <- as.data.frame(matrix(c(4,3,4,3,1,1,3,3,1,3,1,1),nrow=2))

# Collect the data as a list right away
items <- list(l, t)
产生

[1]  0.0 -0.5

这并不是一个可重复的例子,所以很难测试任何提出的解决方案。但是,在第二个块中,您可能可以将最后一行更改为:
i$alpha是
for(i in items)
中的项目是data.frame还是data.frames列表?如果是前者,则您的
i
将循环项目的每一列,这使得
v也不是调试或故障排除服务。提供一个可复制的示例,说明您的起始数据是什么样的,以及您希望实现什么样的最终结果。这里有很多伟大的思想可以帮助我们找到比基本循环更好的解决方案。用一组样本数据编辑。
l <- as.data.frame(matrix(c(4,3,3,3,1,1,3,3,3,3,1,1),nrow=2))
t <- as.data.frame(matrix(c(4,3,4,3,1,1,3,3,1,3,1,1),nrow=2))

items <- c("l","t")
library("irr") # For kripp.alpha

# Produce the data
l <- as.data.frame(matrix(c(4,3,3,3,1,1,3,3,3,3,1,1),nrow=2))
t <- as.data.frame(matrix(c(4,3,4,3,1,1,3,3,1,3,1,1),nrow=2))

# Collect the data as a list right away
items <- list(l, t)
sapply(items, function(v) {
  kripp.alpha(as.matrix(v[c("V1","V2")]))$value
}) 
[1]  0.0 -0.5