小编Max*_*ann的帖子

根据 R 中另一个列表的顺序对列表进行排序

我有大约 20 个相关列表,共 2 个(即每个列表中位置 n 的元素是相关的)。我现在想按升序对每个列表的第二个列表(dens)中的值进行排序,并对其他列表进行相同的更改,以便完成后列表之间仍然具有正确的关系。

例子:

list_1 <- list(a = c(44,47), dens = c(2331,1644))
list_2 <- list(a=66, dens= 1890)
list_3 <- list(a=c(44,46,48,50), dens=c(8000,1452,1596,7521))
mylist <- list(list_1, list_2, list_3)
names(mylist)<-c("ID_1","ID_2","ID_3")
Run Code Online (Sandbox Code Playgroud)

需要的结果:

ID_1:

$ a: 数字 [1:2] 47 44

$ 密度:num[1:2] 1644 2331

ID_2:

$a: 数字 66

$ 窝点:编号 1890

ID_3:

$ a: 数字 [1:4] 46 48 50 44

$ 密度:num[1:4] 1452 1596 7521 8000

好吧,我需要一个针对不同列表长度的动态解决方案。我尝试了一些方法,但一切都失败了,并显示“列表不可能”或“输入必须是原子/因子”等消息。

有人有什么想法吗?

r

5
推荐指数
1
解决办法
1386
查看次数

在R中沿(Poly)线创建等距点

如果我有像这样的空间线对象:

require(sp)

x <- c(18.25721, 18.25763,18.25808,18.25846,18.25864,18.25886,18.25892,18.25913,18.25940,18.25962,
       18.25976,18.25997,18.26021,18.26048,18.26061,18.26086,18.26107,18.26128,18.26154,18.26219,
       18.26276,18.26350,18.26445,18.26510,18.26584,18.26668,18.26704,18.26807,18.26850,18.26944,
       18.27020,18.27080,18.27111,18.27134,18.27168,18.27191,18.27217,18.27254,18.27309,18.27345,
       18.27368,18.27389,18.27398,18.27400,18.27392,18.27383,18.27370) 

y <- c(44.69540,44.69539,44.69544,44.69552,44.69563,44.69586,44.69608,44.69644,44.69672,44.69687
       ,44.69701,44.69718,44.69737,44.69763,44.69771,44.69778,44.69781,44.69781,44.69782,44.69776
       ,44.69772,44.69778,44.69794,44.69805,44.69814,44.69822,44.69824,44.69826,44.69821,44.69805
       ,44.69775,44.69737,44.69728,44.69717,44.69701,44.69687,44.69671,44.69649,44.69616,44.69598
       ,44.69578,44.69560,44.69539,44.69513,44.69490,44.69476,44.69453)

river<-SpatialLines(list(Lines(Line(cbind(x,y)), ID="a")))
proj4string(river) <- CRS("+init=epsg:4326")
Run Code Online (Sandbox Code Playgroud)

例如,如何沿着这条线每3米创建一次点.结果看起来像这样: 在此输入图像描述

我无法弄明白或找到一个只是这样做的包.

r

4
推荐指数
2
解决办法
2297
查看次数

在R中进行连续行计算

假设我有以下数据:

a<- c(1:10)
b<- c(10:1)
Run Code Online (Sandbox Code Playgroud)

现在我想在两行(a和b)上进行连续计算(在本例2中为可变长度),并将输出保存在两个单独的列表(a和b)中.

计算应如下所示:

为一个:

(1 + 2)/ 2; (2 + 3)/ 2; (3 + 4)/ 2; ...; (9 + 10)/ 2

对于b(相同):

(10 + 9)/ 2; (9 + 8)/ 2; (8 + 7)/ 2; ...;(2 + 1)/ 2

a
1,5 2,5 3,5 ... 9,5
b
9,5 8,5 7,5 ... 1,5
Run Code Online (Sandbox Code Playgroud)

我在StackOverflow中找到了这个函数:

v <- c(1, 2, 3, 10, 20, 30)
grp <- 3

res <- sapply(1:(length(v)-grp+1),function(x){sum(v[x:(x+grp-1)])})
Run Code Online (Sandbox Code Playgroud)

这几乎是我需要的,但我更喜欢一个功能,没有使用sapply,只是基地R.任何帮助将不胜感激!

r

0
推荐指数
1
解决办法
147
查看次数

在R中增加样本量时,使用sample()而不进行多次替换

我想从一个被调用的矢量中取"随机"样本,data但是增加size和不增加.

为了说明我的观点data,例如:

data<-c("a","s","d","f","g","h","j","k","l","x","c","v","b","n","m")
Run Code Online (Sandbox Code Playgroud)

我需要的是通过增加采样大小(从size = 2开始)获得不同的采样向量,例如2,但不同的向量之间没有重复,并将所有内容存储到列表中,以便结果看起来像这样:

sample_1<-c("s","d")
sample_2<-c("s","d","a","f")
sample_3<-c("s","d","a","f","m","n")
sample_4<-c("s","d","a","f","m","n","l","c")
sample_5<-c("s","d","a","f","m","n","l","c","j","x")
sample_6<-c("s","d","a","f","m","n","l","c","j","x","v","k")
sample_7<-c("s","d","a","f","m","n","l","c","j","x","v","k","g","b")
sample_8<-c("s","d","a","f","m","n","l","c","j","x","v","k","g","b","h")
samples<-list(sample_1,sample_2,sample_3,sample_4,sample_5,sample_6,sample_7,sample_8)
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是:

samples<-sapply(seq(from=2, to=length(data), by=2), function(i) sample(data,size=i,replace=F),simplify=F,USE.NAMES=T )
Run Code Online (Sandbox Code Playgroud)

不起作用的是增加样本量,但保留前面步骤的样本,并且具有包含所有观察结果的最后一个列表元素.这样的事情可能吗?

r sample

0
推荐指数
1
解决办法
820
查看次数

标签 统计

r ×4

sample ×1