楼主: chenliao
41794 8

[问答] R语言中which 函数的使用问题 [推广有奖]

  • 1关注
  • 0粉丝

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
52 点
帖子
6
精华
0
在线时间
8 小时
注册时间
2014-9-19
最后登录
2016-5-25

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
x1 <- round(runif(100, min=80, max=100))
fx <- function (x1){
for(i in 1:length(x1)){
  zt <- which(x1[i]==80)
}
zt
}
fx(x1)

x1定义为80-100中100个随机数,我想取出x1中等于80的数所在的位置,因此构建了一个函数fx, 但为什么这个代码不能得到我想要的结果,求解答~~R语言初学者 求指教!
二维码

扫码加我 拉你入群

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

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

关键词:Which R语言

回帖推荐

daishen 发表于5楼  查看完整内容

x1
沙发
怪了怪 学生认证  发表于 2014-10-1 04:13:56 |只看作者 |坛友微信交流群
不需要用which函数。这样就可以:


x1 <- round(runif(100, min=80, max=100))
fx <- function (x1){
  
  for(i in 1:length(x1)){
    if (x1[i]==80)
      print(i)
  }

}
fx(x1)

使用道具

藤椅
怪了怪 学生认证  发表于 2014-10-1 04:33:00 |只看作者 |坛友微信交流群
我个人更喜欢这种方式,因为向量输出方便处理:


x1 <- round(runif(100, min=80, max=100))
fx <- function (x1){
  temp <- rep(0,length(x1))
  for(i in 1:length(x1)){
    if (x1[i]==80)
       temp[i] <- 1
  }
  temp
}
fx(x1)
temp2 <- seq(1,length(x1))
temp3 <- temp2*fx(x1)
position <- temp3[temp3 !=0];position

使用道具

板凳
珂赛特 发表于 2014-10-1 09:05:16 |只看作者 |坛友微信交流群
还是有点不明白                                                                        
                                       
                                                     
                                                     
                                             
                                                                 
                                                                                 

使用道具

报纸
daishen 发表于 2014-10-1 10:27:58 |只看作者 |坛友微信交流群
x1 <- round(runif(100, min=80, max=100))
which(x1 == 80)
[1] 10 25 69

使用道具

地板
chenliao 学生认证  发表于 2014-10-3 02:00:12 |只看作者 |坛友微信交流群
daishen 发表于 2014-10-1 10:27
x1
恩恩,我后来也自己发现了,直接用which(x1)==80 就行了,但是x1不应该是一组数么,为什么直接which(x1)就行。。。

使用道具

7
daishen 发表于 2014-10-4 08:41:42 |只看作者 |坛友微信交流群
chenliao 发表于 2014-10-3 02:00
恩恩,我后来也自己发现了,直接用which(x1)==80 就行了,但是x1不应该是一组数么,为什么直接which(x1)就 ...
还是没有理解什么是向量化

使用道具

8
gssdzc 在职认证  发表于 2014-10-7 16:09:05 |只看作者 |坛友微信交流群
跑跑就明白了。。在R中Run

使用道具

9
anztlan 发表于 2017-8-16 18:31:11 |只看作者 |坛友微信交流群
x1 <- round(runif(100, min=80, max=100))
fx <- function (x1){
  for(i in 1:length(x1)){
    zt <- grep('80',x1)
  }
  zt
}
fx(x1)
返回来的结果是[1] 86 87 95 97

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 07:31