Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在lappy中操纵函数_R_Function_Math_Lapply - Fatal编程技术网

R 在lappy中操纵函数

R 在lappy中操纵函数,r,function,math,lapply,R,Function,Math,Lapply,这对外面的人来说应该是个简单的问题 我有一个如下所示的数据框: df1 longitude lattitude 10000 5 1.5 1.4 1.3 1.2 1 0.5 0.1 0.001 0 -119.8304 34.44190 107 14 8 8 8 8 7 5 5 1 1 -119.6768 34.41962 107 19 5 5 5 5 5 3 2 1 2 -119.7162 34.41911 10

这对外面的人来说应该是个简单的问题

我有一个如下所示的数据框:

df1
 longitude lattitude 10000  5 1.5 1.4 1.3 1.2 1 0.5 0.1 0.001
0 -119.8304  34.44190   107 14   8   8   8   8 7   5   5     1
1 -119.6768  34.41962   107 19   5   5   5   5 5   3   2     1
2 -119.7162  34.41911   107 25   9   8   8   5 4   1   1     1
3 -119.7439  34.44017   107 22   7   7   6   5 5   2   1     1
由以下代码创建:

library(geosphere)

df1 <- data.frame(longitude=c(-119.8304, -119.6768, -119.7162, -119.7439, -120.4406, -119.5296, -120.4198, -119.8221, -119.7269, -120.4252, -120.4573, -120.4581),
              lattitude=c(34.44, 34.42, 34.42, 34.44, 34.64, 34.41, 34.94, 34.44, 34.44, 34.97, 34.65, 34.65))
boundary <- c(10000, 5, 1.5, 1.4, 1.3, 1.2, 1, 0.5, 0.1, 0.001)
names(boundary) <- boundary
df1 <- cbind(df1, lapply(boundary, function(x) rowSums(distm(df1, fun = distHaversine) / 1000 <= x)))

我们可以使用
setdiff
获取数据集的名称,但“经度”、“晶格度”列除外。然后循环遍历列的子集,进行计算,并更新数据集

j1 <- setdiff(names(df1), c("longitude", "lattitude"))
df1[j1] <- lapply(df1[j1], function(x) x/(pi*x^2))

嗨,阿克伦。似乎您将pi*^.2乘以了
名称(df)
?但是我实际上需要将
df1
的输出值除以pi*x^2(x是
boundary
)。希望这是有道理的。请告诉我。酷!最后一个请求。能否将纬度、经度列添加回最终数据帧@akrun@JAG2024它已经在那里了。如果你看的话。在第二个选项中,您只需将输出分配给一个新的数据集,即(…)处的
df2%mutate\u如果您想从R中获得更多乐趣,请查看另一个问题:
j1 <- setdiff(names(df1), c("longitude", "lattitude"))
df1[j1] <- lapply(df1[j1], function(x) x/(pi*x^2))
library(dplyr)
df1 %>%
     mutate_at(vars(-matches("longitude", "lattitude")), funs(./(pi*.^2)))