我有一个名为"newprice"的数据框(见下文),我想在R中改变程序中的列名.
> newprice
Chang. Chang. Chang.
1 100 36 136
2 120 -33 87
3 150 14 164
Run Code Online (Sandbox Code Playgroud)
事实上,这正在做什么:
names(newprice)[1]<-paste("premium")
names(newprice)[2]<-paste("change")
names(newprice)[3]<-paste("newprice")
Run Code Online (Sandbox Code Playgroud)
我没有将它放在循环中,因为我希望每个列名称与您看到的不同.
当我将程序粘贴到R控制台时,这是它给我的输出:
> names(newprice)[1]<-paste(“premium”)
Error: unexpected input in "names(newprice)[1]<-paste(“"
> names(newprice)[2]<-paste(“change”)
Error: unexpected input in "names(newprice)[2]<-paste(“"
> names(newprice)[3]<-paste(“newpremium”)
Error: unexpected input in "names(newprice)[3]<-paste(“"
Run Code Online (Sandbox Code Playgroud)
我同样尝试使用该c()
功能 - 例如c("premium")
,而不是paste()
功能,但无济于事.
有人可以帮我解决这个问题吗?
下面我的程序(分为两部分)可以单独运行 - 也就是说,如果我将第一部分粘贴到R控制台,运行它然后粘贴第二部分并运行它.但是,这不是我想要的.我想立刻运行整个程序.如果我这样做,它会在我的控制台中显示以下错误:
1:
Read 0 items
1:
Read 0 items
Error in while ((n <= 0) | (acr <= 0) | (acr >= 1)) { :
argument is of length zero
Run Code Online (Sandbox Code Playgroud)
我试图找出问题,但我找不到根本原因.如果有人能帮助我,我会非常高兴.
#**FIRST PART OF THE PROGRAM**
n <- -2
acr <- -2
while((n<=0) | (acr<=0) | (acr>=1)) {
print("enter a positive integer and the average cancellation rate between 0 and 1
you want")
try(n <- scan(what=integer(), nmax=1), silent=TRUE)
try(acr <- scan(what=double(), nmax=1), silent=TRUE)
}
#**SECOND PART OF THE …
Run Code Online (Sandbox Code Playgroud) 我有一个数据框toplot_noind
,如下所示.
> toplot_noind
Chang.1 Chang.2 Chang.3 Chang.4 Chang.5 Chang.6 Chang.7 Chang.8
18 150.3 84.61 31.45 11.08 -0.19 -57.83 -88.63 -98.39
Run Code Online (Sandbox Code Playgroud)
我想使用这个数据框来绘制使用ggplot2的条形图.
我不需要列名:Chang.1,Chang.2等,在图中.
我希望这些8个值150.3,84.61,..., - 98.39出现在y轴上(18不是值的一部分,它是行的名称).
此外,因为有8个值,我想在x轴上有8个条形 - 每个条形指向这些值.
因此,我想在x轴上将这些条形命名为1(对于第1条),2(对于第2条),3,...,8依次命名.
另外,我想将y轴标记为"总预期利润",将x轴标记为"溢价变化".
下面显示的是我试图做的但它不起作用.实际上我已经尝试过阅读ggplot2,但我读到的材料无法让我理解,但我需要在我的作业中使用这个条形图.我的提交时间非常有限.
library(reshape)
library(ggplot2)
t<-ncol(toplot_noind)
a<-seq(1:t)
ggplot(toplot_noind, aes(x = a, y = toplot_noind, xlab="premium change", ylab="Total Expected Profit")) +
geom_bar(position = "dodge")
Run Code Online (Sandbox Code Playgroud)
非常感谢所有可以帮助我的人.
艾萨克
假设我希望我的R程序的用户输入正数.
如果他输入负数或输入任何字母(a,b,c,d等),我会想让他继续尝试,直到他输入所需的正数.
如何检查他是否输入了一个角色(a,b,c等)?
例如,如果我有:(事实上,这个网站上有人帮我正确编写了这段代码,但我不明白某些特别的东西,我"#explanation of this line"
在代码中指出的第三行
n <- -1
while(is.na(n) | (n < 1) ){
n <- readline("enter a positive integer for the number of simulations: ")
n <- ifelse(grepl("\\D",n),-1,as.integer(n)) #explanation of this line
}
Run Code Online (Sandbox Code Playgroud)
问题:
我知道这is.na(n)
意味着如果n为null(不可用),那么如果用户按下Enter则is.na(n)
成为TRUE
.那是对的吗?
是什么意思:n <- ifelse(grepl("\\D",n),-1,as.integer(n)
?
如何检查用户是否输入(a,b,c,d,...)?
感谢那些可以帮助我的人.
Owusu Isaac