[英]R apply for two data frames
我真的可以想象,答案可以在stackoverflow上找到,但后来我不明白。 所以这是我的问题:
我有一个data.frame“ tmp”,它由17列和许多行组成。 我想要做的是使用apply函数逐行使用tmp信息和tmp信息:
tmp[,17] <- apply(tmp[,4:16], 1, approx, y = y, x = tmp[,2])
y是固定的。
我的问题是,我现在得到anx n-Matrix,因为apply函数会计算tmp[,4:16]
和tmp[,2]
每一对。 我需要的只是对角线,即
(tmp[1,4:16], tmp[1,2]), (tmp[2,4:16], tmp[2,2]), (tmp[3,4:16], tmp[3,2]),...
而且我想避免制作诸如diag(apply(...))
或循环之类的东西,因为我想减少计算时间。
我希望有人能帮助我,并非常感谢您
这是你想要的吗? 请注意, tmp[, 4:16]
和tmp[, 2]
都使用同一行i
。
set.seed(4542) # make it reproducible
tmp <- as.data.frame(matrix(rnorm(20*17), ncol = 17))
y <- rnorm(length(4:16))
s <- sapply(seq_along(tmp[, 1]), function(i) approx(y, tmp[i, 4:16], tmp[i, 2]))
除了seq_along(tmp[, 1])
,也可以使用seq_len(nrow(tmp))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.