小编May*_*you的帖子

IF语句:如果条件为假,如何将单元格留空(""不起作用)

我想写一个IF语句,如果条件为FALSE,则单元格保留为空.请注意,如果在C1中输入以下公式(条件为假),例如:

 =IF(A1=1,B1,"")
Run Code Online (Sandbox Code Playgroud)

如果测试C1为空白或未使用,则即使C1似乎为空白=ISBLANK(C1),也会返回FALSE.这意味着=IF(A1=1,B1,"")如果不满足条件,则公式在技术上不会将单元格留空.

有关实现这一目标的方法的任何想法?谢谢,

excel if-statement worksheet-function excel-2010

112
推荐指数
3
解决办法
109万
查看次数

即使在安装包之后,R也找不到包装

我一直在使用zoo我很久以前安装过的软件包.今天,我创建了一个新的R脚本,并运行library(zoo)并收到以下错误:

 > library(zoo)
 Error in library(zoo) : there is no package called ‘zoo’
Run Code Online (Sandbox Code Playgroud)

奇怪..但是,我尝试使用重新安装包install.packages("zoo"),并获得以下内容:

 > install.packages("zoo")
 Installing package(s) into ‘C:/Users/U122337.BOSTONADVISORS/Documents/R/win-library/2.15’
 (as ‘lib’ is unspecified)
 --- Please select a CRAN mirror for use in this session ---
 trying URL 'http://cran.cnr.Berkeley.edu/bin/windows/contrib/2.15/zoo_1.7-10.zip'
 Content type 'application/zip' length 874474 bytes (853 Kb)
 opened URL
 downloaded 853 Kb

 package ‘zoo’ successfully unpacked and MD5 sums checked
 Warning: cannot remove prior installation of package ‘zoo’

The downloaded binary packages are in …
Run Code Online (Sandbox Code Playgroud)

install r package zoo

46
推荐指数
2
解决办法
9万
查看次数

生成向量元素的所有可能组合的列表

我试图在长度为14的向量中生成0和1的所有可能组合.是否有一种简单的方法可以将输出作为向量列表,甚至更好的数据帧?

为了更好地展示我正在寻找的东西,让我们假设我只需要一个长度为3的向量.我希望能够生成以下内容:

 (1,1,1), (0,0,0), (1,1,0), (1,0,0), (1,0,1), (0,1,0), (0,1,1), (0,0,0)
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

谢谢,

combinations r

43
推荐指数
7
解决办法
4万
查看次数

将<NA>设置为空白

我有一个NA行的数据帧:

 df = data.frame(c("classA", NA, "classB"), t(data.frame(rep("A", 5), rep(NA, 5), rep("B", 5))))
 rownames(df) <- c(1,2,3)
 colnames(df) <- c("class", paste("Year", 1:5, sep = ""))

 > df
   class Year1 Year2 Year3 Year4 Year5
1 classA     A     A     A     A     A
2   <NA>  <NA>  <NA>  <NA>  <NA>  <NA>
3 classB     B     B     B     B     B
Run Code Online (Sandbox Code Playgroud)

我故意引入了空行(NA行),因为我希望在classA行和classB行之间有一些空格.

现在,我想<NA>用空格替换,以便第二行看起来像一个空行.

我试过了:

 df[is.na(df)] <- ""
Run Code Online (Sandbox Code Playgroud)

和

 df[df == "NA"] <- ""
Run Code Online (Sandbox Code Playgroud)

但它没有用..

有任何想法吗?谢谢!

r na

27
推荐指数
2
解决办法
7万
查看次数

保存foreach dopar loop的多个输出

我想知道是否/如何作为foreach dopar循环的一部分返回多个输出.

我们来看一个非常简单的例子.假设我想将2个操作作为foreach循环的一部分,并且希望为每个值返回或保存两个操作的结果i.

对于只返回一个输出,它将如下所示:

library(foreach)
library(doParallel)
cl <- makeCluster(3)
registerDoParallel(cl)

oper1 <- foreach(i=1:100000) %dopar% {
    i+2
}
Run Code Online (Sandbox Code Playgroud)

oper1将是一个包含100000个元素的列表,每个元素都是i+2i的每个值的操作结果.

假设现在我想分别返回或保存两个不同操作的结果,例如i+2和i+3.我尝试了以下方法:

oper1 = list()
oper2 <- foreach(i=1:100000) %dopar% {
    oper1[[i]] = i+2
    return(i+3)
}
Run Code Online (Sandbox Code Playgroud)

希望结果i+2将保存在列表中oper1,并且i+3将返回第二个操作的结果foreach.但是,列表中没有任何内容oper1!在这种情况下,只有i+3从循环返回的结果.

有没有办法在两个单独的列表中返回或保存两个输出?

parallel-processing foreach r

24
推荐指数
2
解决办法
3万
查看次数

将数据帧整体复制n次

我试图复制一个数据帧(动物园对象)50次作为一个整体,并将结果作为一个矩阵,但我尝试过的所有命令似乎都不成功.我可以轻松编写一个可以执行此操作的函数,但我希望结果可以轻松实现rep.

以下面的例子为例

 x <- zoo(data.frame(A = c(1,2,3,4,5,6), B = c(7,8,9,10,11,12), C = c(13,14,15,16,17,18)), order.by = seq(as.Date("2012-01-01"), as.Date("2012-06-01"), by  = "month"))

 #> x
 #           A  B  C
 #2012-01-01 1  7 13
 #2012-02-01 2  8 14
 #2012-03-01 3  9 15
 #2012-04-01 4 10 16
 #2012-05-01 5 11 17
 #2012-06-01 6 12 18
Run Code Online (Sandbox Code Playgroud)

我们试着复制x2次.我要找的最终结果是:

 #      [,1] [,2] [,3]
 # [1,]    1    7   13
 # [2,]    2    8   14
 # [3,]    3    9   15
 # [4,]    4   10   16
 # …
Run Code Online (Sandbox Code Playgroud)

r dataframe rep

13
推荐指数
3
解决办法
9833
查看次数

按索引组合列表列表的元素

请考虑以下列表列表:

lst = list(list(c(1,2), c(3,4)),list(c(5,6), c(7,8)),list(c(9,10), c(11,12)))
Run Code Online (Sandbox Code Playgroud)

该列表lst包含三个列表,每个列表包含两个向量作为元素.我想通过索引组合底层列表的元素.换句话说,我想将列表1中的向量1与列表2和列表3的向量1合并,并将列表1中的向量2与列表2和列表3的向量2等合并...

这是我希望实现的结果:

res = list(c(1,2,5,6,9,10), c(3,4,7,8,11,12))
Run Code Online (Sandbox Code Playgroud)

我知道如果有两个单独的列表,可以按如下方式实现:

mapply(c, lst1, lst2)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何使用列表列表复制相同的逻辑.

有效的方法来实现吗?请记住,实际上,lst是一个包含5000个列表的列表,每个基础列表都包含大量向量.

谢谢!

r list

13
推荐指数
2
解决办法
5462
查看次数

调整水平图例中文本之间的间距

我有一个带有水平图例的情节:

 legend("bottomleft", inset = c(0, -0.3), bty = "n",
        x.intersp=0, xjust=0,yjust=0,
        legend=c("AAPL", "Information Technology",
                 "Technology Hardware and Equipment", "S&P 500"),
        col=c("black", "red", "blue3", "olivedrab3"),
        lwd=2, cex = 0.5, xpd = TRUE, ncol = 4)
Run Code Online (Sandbox Code Playgroud)

问题是图例的第一项"AAPL"和第二项"信息技术"之间存在巨大的间距.

我尝试使用调整间距txt.width(),但它根本不起作用.或者我可能没有按照指示使用此选项.这就是我在txt.width内部引入选项的方法legend():

txt.width = c(2,1,1)
Run Code Online (Sandbox Code Playgroud)

我不确定它是否相关,但我的x轴是日期轴!

有没有一种简单的方法来自定义图例中文本之间的空格?

谢谢!

plot r legend

12
推荐指数
3
解决办法
4万
查看次数

用大量列中的NULL值替换空单元格

我有SQL表,有大量的列.出于某种原因,某些列具有空单元而不是NULL单元.我想让所有列中的所有空单元格都为NULL.

我知道单列的方法是:

 UPDATE your_table SET column = NULL WHERE column = ''
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何有效地为所有列执行类似的逻辑,而不必逐个编写列名.

谢谢,

sql sql-server null sql-server-2005

9
推荐指数
1
解决办法
2万
查看次数

如果未安装,请安装软件包(库)

我在R中使用了几个软件包,但是我在一台机器上运行脚本,可能已经安装了部分/全部软件包,也可能没有.

这些软件包zoo,quantmod,data.table,...,和一堆了.

这是我尝试过的:有没有办法检查是否安装了这些软件包,如果没有安装它?我不希望R浪费时间重新安装已经存在的任何软件包.

这是我尝试过的:

pckg = c("zoo", "tseries", "quantmod", "MASS", "graphics", "plyr", "data.table", "gridExtra") 

 is.installed <- function(mypkg){
    is.element(mypkg, installed.packages()[,1])
 } 

 for(i in 1:length(pckg)) {
    if (!is.installed(pckg[i])){
         install.packages(pckg[i])
     }
 }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

另外,我需要为安装自动设置镜像.我不知道该怎么做.

谢谢!

install r package

9
推荐指数
1
解决办法
1万
查看次数