【问题标题】:How to include calculations in apply or rowsum?如何在 apply 或 rowsum 中包含计算?
【发布时间】:2016-11-29 18:22:47
【问题描述】:

在对数据框中的行求和之前,我需要包含一些操作。这是一个例子:

df1 <- data.frame(
  AC1Q = c(0.53, 0.57, 0.60, 0.51), 
  AC4Q = c(0.15, 0.12, 0.09,0.19), 
  AC2Q = c(0.09, 0.05, 0.07, 0.05), 
  AC3Q = c(0.23, 0.26, 0.23, 0.26)
)
df1
#   AC1Q    AC4Q    AC2Q    AC3Q
# 1 0.53    0.15    0.09    0.23
# 2 0.57    0.12    0.05    0.26
# 3 0.60    0.09    0.07    0.23
# 4 0.51    0.19    0.05    0.26

我想得到基于(sin(2*pi*(AC1Q-0.25)) + sin(2*pi*(-AC4Q+0.25)) - sin(2*pi*(AC2Q+0.25)) - sin(2*pi*(AC3Q-0.25)))/4)的行总和结果应该是:

# 1 0.20
# 2 0.15
# 3 0.21
# 4 0.10

我正在学习apply并尝试了apply(df1, 1, function(x) (sin(2*pi*(df1$AC1Q-0.25)) + sin(2*pi*(-df1$AC4Q+0.25)) - sin(2*pi*(-df1$AC2Q+0.25)) - sin(2*pi*(df1$AC3Q-0.25)))/4)但结果是错误的。我不确定我做错了什么。我知道我总是可以先对每一列进行计算,将它们组合成一个数据框,然后使用rowsum 但是有没有更有效的方法呢?

【问题讨论】:

  • @joel.wilson 我试过apply(x, 1, function(x) (sin(2*pi)*(df1$AC1Q-0.25) + sin(2*pi)*(-df1$AC4Q+0.25) - sin(2*pi)*(-df1$AC2Q+0.25) - sin(2*pi)*(df1$AC3Q-0.25))/4),但它返回一条错误消息,指出object x`未找到`
  • 您是如何达到预期数字的?你的计算正确吗?
  • 您可以直接使用计算,无需循环。简单使用 (sin(2*pi)*(df1$AC1Q-0.25) + sin(2*pi)*(-df1$AC4Q+0.25) - sin(2*pi)*(-df1$AC2Q+0.25) - sin(2*pi)*(df1$AC3Q-0.25))/4)。我的问题是,sin(2*pi) 几乎是 0,那么如何得到你期望的输出呢?

标签: r apply


【解决方案1】:
apply(df1, 1, function(x)  (sin(2*pi)*(x["AC1Q"]-0.25) +
                            sin(2*pi)*(-x["AC4Q"]+0.25) - 
                            sin(2*pi)*(-x["AC2Q"]+0.25) - 
                            sin(2*pi)*(x["AC3Q"]-0.25))/4)

【讨论】:

  • 这个解决方案给出了与(sin(2*pi)*(AC1Q-0.25) + sin(2*pi)*(-AC4Q+0.25) + (-sin(2*pi)*(-AC2Q+0.25)) + (-sin(2*pi)*(AC3Q-0.25)))/4 完全相同的答案,你甚至可以分解它并最终得到(sin(2*pi) * ( (AC1Q-0.25)+(-AC4Q+0.25) - (-AC2Q+0.25) - (AC3Q-0.25))) / 4。我不明白在这里使用apply 的含义。
  • 感谢您的帮助!对不起,我在复制公式时犯了一个错误。 (ACQ+/-0.25) 应该在 sin 范围内。现在已更正。
  • @Jilber 我的主要关注点只是帮助 OP 解决他的解决方案本身。只是想告诉他如何更正他的代码。而且你的代码也是正确的..我完全同意谢谢
猜你喜欢
  • 2018-05-05
  • 2018-05-23
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
相关资源
最近更新 更多