首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据geoR中函数的值设置R列表

根据geoR中函数的值设置R列表
EN

Stack Overflow用户
提问于 2017-11-26 19:09:11
回答 1查看 47关注 0票数 1

我正在调查R的行为,并找出了一些有用的东西。

我将使用包geoR作为参考,因为它是我正在使用的包。

我似乎不明白细分列表是如何工作的。我有下面的代码。

代码语言:javascript
复制
install.packages("geoR", dependencies = T)
library(geoR)

v.1 <- variog(wolfcamp)
v.2 <- variog(wolfcamp, trend = "1st")

vg <- list(v.1, v.2)
names(vg) <- c("Constant", "Linear")

其中我创建了两个变量函数(这些函数的性质与此无关)。这些都是“变异函数”类的对象,可以快速检查。

在每个变异函数中,有两个向量,"u“和"v",我想提取它们。因为我把它们放在一个列表中,所以我希望能够通过简单的子设置来检索它们。

代码语言:javascript
复制
>vg[1]$Constant$u
 [1]  16.77718  50.33154  83.88591 117.44027 150.99463 184.54899 218.10335
 [8] 251.65772 285.21208 318.76644 352.32080 385.87517 419.42953

>vg[1]$Constant$v
 [1]   1796.634   3690.930   7857.991  12440.353  23165.716  31798.304
 [7]  38956.743  52007.883  67601.931  94523.535 159900.019 186464.824
[13] 219033.678

现在,如果我使用引号中的中间子集调用相同的对象,则得到相同的结果。

代码语言:javascript
复制
> vg[1]$"Constant"$u
 [1]  16.77718  50.33154  83.88591 117.44027 150.99463 184.54899 218.10335
 [8] 251.65772 285.21208 318.76644 352.32080 385.87517 419.42953

但是,如果我调用函数输出的子集或定义为函数输出的对象的子集,则输出是不一样的。

代码语言:javascript
复制
k <- names(vg)[1]

> vg[1]$k$u
NULL

这一切为什么要发生?这与类变异函数定义的细节有关吗?还是我对列表设置不了解?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-27 03:54:11

它与class‘变异函数’无关,而是在传递对象时提取list元素的一般行为。使用list可以找到str(vg)的结构。

提取单个list元素的方法是使用[[。这既适用于对象,也适用于元素或索引的名称,也就是说,如果我们想使用对象'k‘提取

代码语言:javascript
复制
vg[[k]]$u
#[1]  16.77718  50.33154  83.88591 117.44027 150.99463 184.54899 218.10335 251.65772 285.21208 318.76644
#[11] 352.32080 385.87517 419.42953

注意,没有使用vg[1],也不需要它,因为vg[1]仍然没有提取‘常数’元素。

代码语言:javascript
复制
vg[[1]]$u
#[1]  16.77718  50.33154  83.88591 117.44027 150.99463 184.54899 218.10335 251.65772 285.21208 318.76644
#[11] 352.32080 385.87517 419.42953

其中1是第一个列表元素,即“常客”

如果我们使用的是名称本身

代码语言:javascript
复制
vg[['Constant']]$u
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47499957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档