可以说我有以下数据框 set.seed(123) df <- data.frame(var1=(runif(10)>0.5)*1) var1可以具有任何types/数量的级别,不具体为0和1 我想创build一个var2 ,每次var1改变时都会增加1, 而不使用for loop 预期的结果是: data.frame(var1=(runif(10)>0.5)*1, var2=c(1, 2, 3, 4, 4, 5, 6, 6, 6, 7)) var1 var2 0 1 1 2 0 3 1 4 1 4 0 5 1 6 1 6 1 6 0 7 数据框的另一种select可能是: df <- data.frame(var1=c("a", "a", "1", "0", "b", "b", "b", "c", […]
我有一个关于如何有效地将任何types的外部包加载到R中的一般性问题。我发现详细说明这些信息的许多来源是不够的,但是我将不提及这些相应的URL。 我已经成功地将外部包加载到R之前,但我有困难加载fgui包。 在我的具体情况下,我不能将库fgui加载到R Studio中。 首先,我直接从CRAN下载命令: install.packages("fgui", lib="~/Documents/R_dir") 这对我来说很好。 我的工作目录设置为〜/ Documents / R_dir 我使用的下一个命令是: library("fgui", lib.loc="~/Documents/R_dir") 我得到的错误是: Error : .onLoad failed in loadNamespace() for 'tcltk', details: call: dyn.load(file, DLLpath = DLLpath, …) error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so': dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so, 10): Library not loaded: /opt/X11/lib/libX11.6.dylib Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so Reason: image not found Error: package or namespace […]
我知道,对于列表,使用基本运算符$和[[ 。 例如: ll <- list(yy=1) ll$y [1] 1 但我仍然是一个R新手,这对我来说是新的,函数参数的部分匹配: h <- function(xx=2)xx h(x=2) [1] 2 我想了解这是如何工作的。 它背后的机制是什么? 这有没有副作用? 我想了解如何testing是否给出了xx参数? Andrie评论后编辑: 内部R使用pmatchalgorithm来匹配参数,这里是一个例子,它是如何工作的: pmatch("me", c("mean", "median", "mode")) # error multiple partial matches [1] NA > pmatch("mo", c("mean", "median", "mode")) # mo match mode match here [1] 3 但为什么R有这样的特点? partial unique匹配的基本思想是什么?
我正在用ggplot创build一个堆积条形图,如下所示: plot_df <- df[!is.na(df$levels), ] ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill") 这给了我这样的东西: 我如何反转堆叠的酒吧本身的顺序,使1级在底部,5级在每个酒吧的顶部? 我已经看到了这方面的一些问题(例如, 如何控制使用ggplot2上的标识的堆叠条形图的sorting ),而常见的解决scheme似乎是按照该级别对数据框进行重新sorting,因为ggplot正在使用确定顺序 所以我尝试使用dplyr重新sorting: plot_df <- df[!is.na(df$levels), ] %>% arrange(desc(levels)) 不过,情节也是一样的。 无论我按升序还是降序排列,似乎都没有什么差别 这是一个可重现的例子: group <- c(1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4) levels <- c("1","1","1","1","2","2","2","2","3","3","3","3","4","4","4","4","5","5","5","5","1","1","1","1") plot_df <- data.frame(group, levels) ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
我有一个string, s="CCCGTGCC"和一个子stringss="CC" 。 我想得到所有的索引在s开始stringss 。 在我的例子中,我想要取回数组c(1,2,6) 。 有没有任何string函数实现了这一点? 请注意,我的string格式为"CCCGTGCC" ,而不是c("C","C","C","G","T","G","C","C") 。 grep只返回string中是否有匹配项,而不是string中匹配项的索引,除非我丢失了一些东西。
我有一个向量,例如c(1, 3, 4, 5, 9, 10, 17, 29, 30) ,我想将在“不规则”向量中构成规则连续序列的“相邻”元素组合在一起导致: L1:1 L2:3,4,5 L3:9,10 L4:17 L5:29,30 天真的代码(一个前C程序员): partition.neighbors <- function(v) { result <<- list() #jagged array currentList <<- v[1] #current series for(i in 2:length(v)) { if(v[i] – v [i-1] == 1) { currentList <<- c(currentList, v[i]) } else { result <<- c(result, list(currentList)) currentList <<- v[i] […]
当Excel表格导入为ArcGIS中的xy点时,我将继续丢失每个点的正确DateTime标记。 因此,我已经格式化了DateTime序列号,创build了.shp,并使用readOGR()将.shp读入到R中。 一旦在RI可以使用as.Date()和origin = "1899-12-30"参数转换为正确的date,但时间被省略。 虽然我看到一个单一的date的例子,我还没有看到与DateTime的例子。 我一直在使用as.Date()以及as.POSIXct()但这看似简单的任务有点令人沮丧,因此后… 我创build了一个具有10行正确date时间格式以及Excel序列号的示例数据集。 *感谢Richard和themailmail敏锐的注意力。 我已经更正了数据并重新发布在这里。 这是我的样本数据 helpData <- structure(list(ID = 1:10, DateTime = structure(c(9L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 8L), .Label = c("3/11/2011 7:55", "3/13/2011 7:55", "3/14/2011 0:00", "3/14/2011 10:04", "3/14/2011 7:55", "3/15/2011 19:55", "3/17/2011 7:55", "3/18/2011 4:04", "3/4/2011 6:00"), class = "factor"), ExcelNum = c(40606.25, 40613.32986, […]
根据R'Memory-limits'文档,不可能分配一个长度大于2 ^ 31-1的向量。 这是因为用作索引的整数只能使用31位(符号为1位)。 但在64位系统上,我应该能够分配更长的向量。 为什么R在64位系统上施加相同的最大长度? 有没有办法避开这个限制?
我有两个字符variables(对象的名称),我想提取最大的公共子string。 a <- c('blahABCfoo', 'blahDEFfoo') b <- c('XXABC-123', 'XXDEF-123') 我想要以下结果: [1] "ABC" "DEF" 这些向量作为input应该给出相同的结果: a <- c('textABCxx', 'textDEFxx') b <- c('zzABCblah', 'zzDEFblah') 这些例子具有代表性。 这些string包含标识元素,而每个向量元素中的其余文本是通用的,但未知。 有没有解决办法,在以下的一个地方(按照优先顺序): 基地R 推荐软件包 在CRAN上可用的软件包 假定重复的答案不符合这些要求。
我试图将string“2013-JAN-14”转换为date如下: sdate1 <- "2013-JAN-14" ddate1 <- as.Date(sdate1,format="%Y-%b-%d") ddate1 但是我得到: [1] NA 我究竟做错了什么 ? 我应该为此安装一个软件包(我尝试安装chron)。