楼主: dyf480
45537 2

[问答] 类别为'closure'的对象不可以取子集,遇到这个问题怎么办? [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

初中生

19%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
76 点
帖子
6
精华
0
在线时间
10 小时
注册时间
2015-5-13
最后登录
2015-6-5

楼主
dyf480 发表于 2015-5-14 16:56:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
函数是这么写的:myfun<- function(k){

t<-round(runif(k,1,72))
t
}

请问t为什么不能取t[1]或t[i]这种里面的一个数据,查看了t的类型,是function,如何让它变为向量呢?
>mode(t)
[1] "function"
> t[2]
错误于t[2] : 类别为'closure'的对象不可以取子集

初学者,问题很简单,希望高手帮我回答,感激不尽

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:closure sure SUR CLO 怎么办 function

沙发
jz.mraz 在职认证  发表于 2015-5-14 17:40:57
1. 你调用myfun得到的结果需要赋值给一个变量, 而不是直接在外层环境里面调用函数中的参数
比如
t = myfun(10)

这样就可以了。

2. t()在r里面就是一个函数,赋值最好不用r已有的名字
已有 1 人评分经验 收起 理由
李会超 + 60 热心帮助其他会员

总评分: 经验 + 60   查看全部评分

藤椅
赵安豆 发表于 2024-6-16 13:09:08
你遇到的问题在于尝试对一个函数(在R语言中称为'closure')进行索引操作。在R中,函数和向量等数据结构不同,不能像处理数组或列表那样使用方括号`[]`来索引或取子集。

错误信息“类别为'closure'的对象不可以取子集”明确指出你正在尝试对一个函数执行不支持的操作。

如果你的代码是这样的:

```R
myfun <- function(x) {return(x^2)}
t[2]  # 这里假设 't' 是函数 myfun 的名称,但实际上 't' 不是一个有效的变量或函数名。
```

问题可能在于你误解了`myfun`的使用方式。如果`myfun`是一个平方函数,正确调用它的方式是:

```R
result <- myfun(2) # 调用函数并传入参数 2
print(result)
```

如果你的本意是要从一个列表或向量中选择第2个元素,并且在之前的代码中有定义过`t`为该列表或向量,正确的语法是:

```R
t <- c(1, 2, 3)    # 假设 t 是一个包含数字的向量
result <- t[2]     # 正确地选择第二个元素
print(result)
```

请检查你的代码,确认你是在正确地调用函数或访问数据结构中的元素。如果`myfun`是函数名,则直接以参数形式调用;如果是列表或向量的名称,使用正确的索引语法来取子集。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 19:19