我有两个数据帧 dat1
和 dat2
:
dat1 <- data.frame(id = rep(c("a","b","c"), each =100),
dist = rep(1:100, times = 3),
var1 = rnorm(300),
var2 = rnorm(300))
dat2 <- data.frame(id = c("a","b","c"),
value = c(42,56,39))
该 value
栏目 dat2
中包含了我想通过子集的值的索引。dat1
. 我写了以下函数 getv
来做这个子集,并使用该值执行这个操作。
getk <-
function(id, value){
x <- dplyr::filter(dat1, id == id)
x <- x[1:value, ]
k = 10*(value^(2/9))
k = ceiling(k)
k
}
getk(a,42)
我想在函数中添加一行,将正确的... value
从 dat2
变成一个新的对象 v
,这样我就不用再给函数输入 id
和 value
每次都是如此。我不知道如何说本质上, "如果我告诉你,我想这样做,为了 a
,分配号码从 dat2$value
搭配 filter(dat2, id==a)
到对象 v
"
换句话说,我的函数会变成类似这样的东西。
getk <-
function(id){
x <- dplyr::filter(dat1, id == id)
v <- #the value in dat2
x <- x[1:v, ]
k = 10*(v^(2/9))
k = ceiling(k)
k
}
#after which I could just do this and get the same answer as above:
getk(a)
`
我相信你想
v <- dat2$value[dat2$id == id]
但请注意,只有当你使用了 getk("a")
自从 a
不是一个对象。