楼主: yjbxjg
16694 22

[问答] 请教R中的 if else 问题 [推广有奖]

  • 11关注
  • 5粉丝

已卖:2917份资源

讲师

0%

还不是VIP/贵宾

-

威望
0
论坛币
25838 个
通用积分
15.8904
学术水平
8 点
热心指数
13 点
信用等级
7 点
经验
17725 点
帖子
223
精华
0
在线时间
442 小时
注册时间
2013-4-21
最后登录
2025-12-19

楼主
yjbxjg 发表于 2014-9-15 21:30:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

for(i in 1:length(p.values)){
  if(0 < p.values[i,1] <= 0.001) p<-c("***")
  else if(0.001 < p.values[i,1] <= 0.01) p<-c("**")
  else if(0.01 < p.values[i,1] <= 0.05) p<-c("*")
  else if(0.05<p.values[i,1]<=0.01) p<-c(".")
  else if(0.01<p.values[i,1]<= 1) P<-C(" ")
}
上述程序在R中始终运行不出来,运行提示如下:
for(i in 1:length(p.values)){
+   if(0 <= p.values[i,1] <= 0.001) p<-c("***")
Error: unexpected '<=' in:
"for(i in 1:length(p.values)){
  if(0 <= p.values[i,1] <="
>   else if(0.001 < p.values[i,1] <= 0.01) p<-c("**")
Error: unexpected 'else' in "  else"
>   else if(0.01 < p.values[i,1] <= 0.05) p<-c("*")
Error: unexpected 'else' in "  else"
>   else if(0.05<p.values[i,1]<=0.01) p<-c(".")
Error: unexpected 'else' in "  else"
>   else if(0.01<p.values[i,1]<= 1) P<-C(" ")
Error: unexpected 'else' in "  else"
> }
Error: unexpected '}' in "}"
> for(i in 1:length(p.values)){
+   if(0 < p.values[i,1] < 0.001) p<-c("***")
Error: unexpected '<' in:
"for(i in 1:length(p.values)){
  if(0 < p.values[i,1] <"
>   elseif(0.001 < p.values[i,1] < 0.01) p<-c("**")
Error: unexpected '<' in "  elseif(0.001 < p.values[i,1] <"
>   elseif(0.01 < p.values[i,1] < 0.05) p<-c("*")
Error: unexpected '<' in "  elseif(0.01 < p.values[i,1] <"
>   elseif(0.05<p.values[i,1]<0.01) p<-c(".")
Error: unexpected '<' in "  elseif(0.05<p.values[i,1]<"
>   elseif(0.01<p.values[i,1]< 1) P<-C(" ")
Error: unexpected '<' in "  elseif(0.01<p.values[i,1]<"
> }
Error: unexpected '}' in "}"

二维码

扫码加我 拉你入群

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

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

关键词:else ELS LSE values length

沙发
yangming98 发表于 2014-9-15 21:43:16
R不支持区间表示!!!!

藤椅
yangming98 发表于 2014-9-15 21:43:31
R不支持区间表示!!!!

板凳
hyu9910 在职认证  发表于 2014-9-15 21:54:53
0 < p.values[i,1] <= 0.001
这种写法,一般的编程语言都不会通过的吧

报纸
yjbxjg 发表于 2014-9-15 22:04:41
yangming98 发表于 2014-9-15 21:43
R不支持区间表示!!!!
那应该怎么表述呢?

地板
yjbxjg 发表于 2014-9-15 22:05:54
hyu9910 发表于 2014-9-15 21:54
0 < p.values
应该怎么学习编程语言呀,我是按照自己的想法来写的,也没有找到相关的例子。请问怎么查看if的帮助?

7
hyu9910 在职认证  发表于 2014-9-15 22:11:34
yjbxjg 发表于 2014-9-15 22:05
应该怎么学习编程语言呀,我是按照自己的想法来写的,也没有找到相关的例子。请问怎么查看if的帮助?
( 0 < p.values[i,1]) && (p.values[i,1] <= 0.001 )
差不多这样。 找编程的入门书,花点时间看看,应该不难做到的

8
yjbxjg 发表于 2014-9-15 22:13:01
hyu9910 发表于 2014-9-15 22:11
( 0 < p.values) && (p.values
好的,谢谢您~

9
daishen 发表于 2014-9-16 09:53:25
为什么不从向量化的角度考虑这个问题,非要使用for,if之类的指令,感觉是用C的思维学习R。

library(data.table)

# 5类划分

dat = data.table(x = 1:5,y = c(0.001,0.01,0.05,0.1,1),z = c('***','**','*','.',''))
setkey(dat,x)

# 把数据按照类别分组

data = data.table(x = 1:1001,y = seq(0,1,0.001))
data = data[,z := rep(1:5,rle(y%in%dat[,y])$lengths[which(1:length(rle(y%in%dat[,y])$lengths) %% 2 == 1)] + 1)]
setkey(data,z)
data = data[dat]
setkey(data,x)

# 模拟一组数据

yourdata = data.table(x = 1:10,p.vaule = round(abs(rnorm(10)/10),3))
setkey(yourdata,x)

yourdata[data,nomatch=0]

    x p.vaule z     y   y.1 z.1
1:  1   0.062 1 0.000 0.001 ***
2:  2   0.009 1 0.001 0.001 ***
3:  3   0.041 2 0.002 0.010  **
4:  4   0.200 2 0.003 0.010  **
5:  5   0.049 2 0.004 0.010  **
6:  6   0.023 2 0.005 0.010  **
7:  7   0.034 2 0.006 0.010  **
8:  8   0.008 2 0.007 0.010  **
9:  9   0.055 2 0.008 0.010  **
10: 10   0.118 2 0.009 0.010  **

10
yjbxjg 发表于 2014-9-16 10:41:18
daishen 发表于 2014-9-16 09:53
为什么不从向量化的角度考虑这个问题,非要使用for,if之类的指令,感觉是用C的思维学习R。

library(data ...
感觉很高深,说实话我没看懂,R里面也运行不了。。。我想问一下,你是怎么学的?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 18:43