这个简单的for循环取每行中的最大值,减去最小值,并将结果赋给相应行中的列“e”。列“e”中的所有结果值都是正确的,除了最后一个,它应该等于3.但是,for循环返回6作为答案。
#data frame
df <- data.frame(a=c(1,0,3,9),
b=c(2,3,2,8),
c=c(3,6,1,7),
d=c(4,9,4,6))
#Simple for loop to generate new, calculated column "e"
for(i in 1:nrow(df)){
df$e[i] <- max(df[i,])-min(df[i,])
}
答案 0 :(得分:1)
我们可以使用 [Route]
public ActionResult Index()
{
var model = new T();
return RedirectToAction("Search", model);
}
apply
另一个选项是来自df$e <- apply(df, 1, function(x) diff(range(x)))
df$e
#[1] 3 9 3 3
rowRanges
matrixStats
在library(matrixStats)
df$e <- c(diff(t(rowRanges(as.matrix(df)))))
df$e
#[1] 3 9 3 3
循环中,我们可以创建一个临时对象来分配值,然后更新&#39; e&#39;柱
for
答案 1 :(得分:1)
这是一个循环,你不需要添加任何中间对象(除了i):
for(i in 1:nrow(df)) df[i, "e"] <- max(df[i,], na.rm=T) - min(df[i,], na.rm=T)
df
a b c d e
1 1 2 3 4 3
2 0 3 6 9 9
3 3 2 1 4 3
4 9 8 7 6 3
na.rm
df[2:nrow(df),"e"]
的值已被指定为NA
,因此需要i <-1