全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
45254 2
2015-05-14
函数是这么写的: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'的对象不可以取子集

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

二维码

扫码加我 拉你入群

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

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

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

这样就可以了。

2. t()在r里面就是一个函数,赋值最好不用r已有的名字
二维码

扫码加我 拉你入群

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

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

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学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群