我在函数中有以下代码
Myfunc<- function(directory, MyFiles, id = 1:332) {
# uncomment the 3 lines below for testing
#directory<-"local"
#id=c(2, 4)
#MyFiles<-c(f2.csv,f4.csv)
idd<-id
df2 <- data.frame()
for(i in 1:length(idd)) {
EmptyVector <- read.csv(MyFiles[i])
comp_cases[i]<-sum(complete.cases(EmptyVector))
print(comp_cases[[i]])
id=idd[i]
ret2=comp_cases[[i]]
df2<-rbind(df2,data.frame(id,ret2))
}
print(df2)
return(df2)
}
Run Code Online (Sandbox Code Playgroud)
当我尝试通过选择函数内部的代码并注释掉返回时在R中运行它时,这种方法有效.我从print语句中获得了一个很好的数据框:
> df2
id ret2
1 2 994
2 4 7112
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试df2从函数返回数据帧时,它只返回第1行,忽略所有其他值.我的问题是它在我尝试的各种值的函数内工作(用各种组合打开多个文件)而不是当我尝试返回数据帧时.请有人帮忙吗.非常感谢提前.
我想按因子对数据帧进行子集化.我只想保留高于特定频率的因子水平.
df <- data.frame(factor = c(rep("a",5),rep("b",5),rep("c",2)), variable = rnorm(12))
Run Code Online (Sandbox Code Playgroud)
此代码创建数据框:
factor variable
1 a -1.55902013
2 a 0.22355431
3 a -1.52195456
4 a -0.32842689
5 a 0.85650212
6 b 0.00962240
7 b -0.06621508
8 b -1.41347823
9 b 0.08969098
10 b 1.31565582
11 c -1.26141417
12 c -0.33364069
Run Code Online (Sandbox Code Playgroud)
而且我想降低重复次数少于5次的因子水平.我开发了一个for循环,它正在工作:
for (i in 1:length(levels(df$factor))){
if(table(df$factor)[i] < 5){
df.new <- df[df$factor != names(table(df$factor))[i],]
}
}
Run Code Online (Sandbox Code Playgroud)
但是,存在更快更漂亮的解决方案吗?
我正在绘制一个堆积条形图并用于geom_text插入每个堆栈的值.我面临的困难是一些堆栈非常小/窄,因此两个堆栈的文本相互重叠,因此不是很可读.我想以一种方式调整文本定位,例如文本位置在每个堆栈之间hjust == 1和hjust == -1每个堆栈之间交替,以便不会有重叠(或任何其他方法将导致可读文本).
下面是目前我在做什么的例子(dput中mydf提供如下):
library(ggplot2)
ggplot(mydf, aes(x=variable, y = value, fill = Category)) +
geom_bar(stat="identity") +
geom_text(aes(label = value, y = pos-(value/2)), size = 3)
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试的是:
使用position = position_dodge(width = 0.5)和position = position_jitter(h =0.5, w = 0.5),但没有造成什么,我要怎样做.
我的第一个想法是定义hjust = c(1,-1)希望它将被回收并且文本将在它们之间交替hjust == 1,hjust == -1但它会导致错误消息:
Error: Incompatible lengths for set aesthetics: size, hjust
Run Code Online (Sandbox Code Playgroud)
我也尝试过定义,size = c(3,3,3,3,3,3,3,3,3), hjust = …
有什么功能之间的差异ls()和objects()?
我尝试了以下代码,他们给出了相同的结果
a <- 1:10
b <- letters
c <- month.abb
Run Code Online (Sandbox Code Playgroud)
结果:
> ls()
[1] "a" "b" "c"
> objects()
[1] "a" "b" "c"
Run Code Online (Sandbox Code Playgroud) 我就是这样做的:
df <- data.frame(a=1:200)
df$a <- NULL
df
Run Code Online (Sandbox Code Playgroud)
结果:
data frame with 0 columns and 200 rows
Run Code Online (Sandbox Code Playgroud)
只用一个命令就可以实现同样的目的吗?
<TABLE cellspacing=1 cellpadding=7 rules=all frame=Box border=1>
<thead>
<TR>
<TD ROWSPAN=2 ALIGN=CENTER VALIGN=CENTER> </TD>
<TD COLSPAN=6 ALIGN=CENTER>1a. My peers make a positive impact my work environment.</TD>
<TD ALIGN=CENTER>Number</TD>
</TR>
<TR>
<TD ALIGN=CENTER>Strongly agree <br> </TD>
<TD ALIGN=CENTER>Generally agree <br> </TD>
<TD ALIGN=CENTER>Neither agree nor<br>disagree</TD>
<TD ALIGN=CENTER>Generally disagree<br> </TD>
<TD ALIGN=CENTER>Strongly disagree<br> </TD>
<TD ALIGN=CENTER>No basis to judge<br> </TD>
<TD ALIGN=CENTER>of Cases</TD>
</TR>
</thead>
<tbody>
<TR>
<TD ALIGN=LEFT VALIGN=TOP> Company-Wide </TD>
<TD ALIGN=RIGHT VALIGN=BOTTOM> 44.1</TD>
<TD ALIGN=RIGHT VALIGN=BOTTOM> 44.9</TD>
<TD ALIGN=RIGHT VALIGN=BOTTOM> 6.6</TD> …Run Code Online (Sandbox Code Playgroud) 我使用R来分析包含每日最高和最低温度值的时间序列(1951-2013).数据具有以下结构:
YEAR MONTH DAY MAX MIN
1985 1 1 22.8 9.4
1985 1 2 28.6 11.7
1985 1 3 24.7 12.2
1985 1 4 17.2 8.0
1985 1 5 17.9 7.6
1985 1 6 17.7 8.1
Run Code Online (Sandbox Code Playgroud)
我需要根据这个定义找出热浪的频率:连续三天或更多天的时间,每日最高和最低温度超过研究期间所有天的最高和最低温度的90%.
基本上,当Max和Min温度超过阈值时,我想要连续几天(三个或更多)的子集.输出将是这样的:
YEAR MONTH DAY MAX MIN
1989 7 18 45.0 23.5
1989 7 19 44.2 26.1
1989 7 20 44.7 24.4
1989 7 21 44.6 29.5
1989 7 24 44.4 31.6
1989 7 25 44.2 26.7
1989 7 26 44.5 25.0
1989 7 …Run Code Online (Sandbox Code Playgroud) 我有一个包含各种列的数据框,某些列中的某些数据包含双引号,我想删除它们,例如:
ID name value1 value2
"1 x a,"b,"c x"
"2 y d,"r" z"
Run Code Online (Sandbox Code Playgroud)
我希望这看起来像这样:
ID name value1 value2
1 x a,b,c x
2 y d,r z
Run Code Online (Sandbox Code Playgroud) 我想计算数字向量x的小数点前的位数,数字大于或等于1.例如,如果向量是
x <- c(2.85, 356.01, 66.1, 210.0, 1445.11, 13.000)
Run Code Online (Sandbox Code Playgroud)
我的代码应该返回一个包含整数1,3,2,3,4,2的向量
有谁知道怎么做?
我经常使用逗号分隔的值,并且对read_csv()和之间的差异感到好奇read.csv()。
是否有任何实际差异可以揭示两者的情境使用?