(以下场景简化了我的实际情况)
我的数据来自村庄,我想通过一个村庄变量来总结一个结果变量。
> data
village A Z Y
<chr> <int> <int> <dbl>
1 a 1 1 500
2 a 1 1 400
3 a 1 0 800
4 b 1 0 300
5 b 1 1 700
Run Code Online (Sandbox Code Playgroud)
例如,我想计算Y仅Z==z由村庄使用的平均值。在这种情况下,我希望村庄“a”为 (500 + 400)/2 = 450,村庄“b”为 700。
请注意,实际情况更复杂,我不能直接使用这个答案,但重点是我需要将分组的 tibble 和全局变量 (z) 传递给我的函数。
z <- 1 # z takes 0 or 1
data %>%
group_by(village) %>% # grouping by village
summarize(Y_village = Y_hat_village(., z)) # pass …Run Code Online (Sandbox Code Playgroud) 在C++中,我们可以将变量声明为引用.
int a = 10;
int& b = a;
Run Code Online (Sandbox Code Playgroud)
如果我们设置b=15,a也会改变.
我想在Rcpp做类似的事情.
List X = obj_from_R["X"];
IntegerVector x_i = X[index];
x_i = value;
Run Code Online (Sandbox Code Playgroud)
我想X通过在其向量之一中插入一个值来更新R中的对象.上面的代码不起作用,所以我尝试了这个:
IntegerVector& x_i = X[index];
Run Code Online (Sandbox Code Playgroud)
并收到错误.
error: non-const lvalue reference to type 'IntegerVector'
(aka 'Vector<13>') cannot bind to a temporary of type 'Proxy' (aka 'generic_proxy<19>')
Run Code Online (Sandbox Code Playgroud) 之后如何使用自定义函数group_by()?我检查了类似的帖子(1,2,和3),但是我当前的代码返回相同值的所有组。
> data
village A Z Y
<chr> <int> <int> <dbl>
1 a 1 1 500
2 a 1 1 400
3 a 1 0 800
4 b 1 0 300
5 b 1 1 700
z <- 1
data %>%
group_by(village) %>%
summarize(Y_village = Y_hat_village(., z))
Y_hat_village <- function(data_village, z){
# Calculate the mean for a specific z in a village
data_z <- data_village %>% filter(Z==get("z"))
return(mean(data_z$Y))
}
Run Code Online (Sandbox Code Playgroud)
我想让(a)村庄有(500 + 400)/ …