Tag: r

在ggplot2条形图中订单栏

我正在试图制作一个条形图,其中最大的条形将与y轴最接近,最短的条形将最远。 所以这就像我的桌子一样 Name Position 1 James Goalkeeper 2 Frank Goalkeeper 3 Jean Defense 4 Steve Defense 5 John Defense 6 Tim Striker 所以我正在试图build立一个条形图来显示根据位置的玩家数量 p <- ggplot(theTable, aes(x = Position)) + geom_bar(binwidth = 1) 但是图中先显示守门员先防守吧,最后是前锋一号。 我想要图表的sorting,使防守栏最接近y轴,守门员,最后是前锋之一。 谢谢

在R中快速读取非常大的表格作为数据框

我有非常大的表(3000万行),我想在R中加载一个数据read.table()有很多方便的function,但是似乎有很多逻辑在执行,会慢事情倒了。 在我的情况下,我假设我知道列的types提前,该表不包含任何列标题或行名称,并没有任何病态字符,我不必担心。 我知道使用scan()作为列表读取表格可能会很快,例如: datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))) 但是,我的一些尝试将其转换为dataframe似乎将上述性能降低了6倍: df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))) 有没有更好的方法来做到这一点? 或者可能完全不同的方法来解决这个问题?

使用$和列名称向量dynamicselect数据框列

我希望根据不同的栏目,一个轮到一个数据框。 我有一个字符向量与order应该基于的相关列名称: parameter <- c("market_value_LOCAL", "ep", "book_price", "sales_price", "dividend_yield", "beta", "TOTAL_RATING_SCORE", "ENVIRONMENT", "SOCIAL", "GOVERNANCE") 我希望循环“参数”中的名称并dynamicselect要用于order数据的列: Q1_R1000_parameter <- Q1_R1000[order(Q1_R1000$parameter[X]), ] 其中X是1:10 (因为我在“参数”中有10个项目)。 为了使我的例子具有可重现性,请考虑数据集“mtcars”和一些存储在字符向量“cols”中的variables名称。 当我尝试使用“cols”的一个dynamic子集从“mtcars”中select一个variables( Q1_R1000$parameter[X] )时,该列未被选中: cols <- c("cyl", "am") mtcars$cols[1] # NULL

我应该如何处理“package xxx”不可用(对于R版本xyz)“警告?

我试图安装一个包,使用 install.packages("foobarbaz") 但收到警告 Warning message: package 'foobarbaz' is not available (for R version xyz) 为什么不认为这个软件包是可用的? 另请参阅这些问题提到这个问题的具体实例: 我的软件包不适用于R 2.15.2 软件包'Rbbg'不可用(R版本2.15.2) 软件包不可用(R版本2.15.2) 软件包doMC不适用于install.packages中的R 3.0.0版警告 依赖'Rglpk'不可用于包'fPortfolio' 当我们的R版本不可用时,该怎么办? R的bigvis软件包不适用于R 3.0.1版吗? 软件包'syncwave'/'mvcwt'不可用(对于R版本3.0.2) 包'钻石'是不可用的(R版本3.0.0) R的plyr软件包不适用于R 3.0.2版吗? https://stackoverflow.com/questions/21580661/installing-predictabel-package-on-r-2-15-2 打包bigmemory不安装在R 64 3.0.2上 软件包“makeR”不可用(对于版本3.0.2) 软件包'RTN'不可用(对于R版本3.0.1) 麻烦安装geoR软件包 包'twitterR'不可用(R版本3.1.0) 如何安装'Rcpp,包? 我得到了“包不可用” 包“数据集”不可用(对于R版本3.1.1) “package'rhipe'不可用(对于R版本3.1.2)” https://stackoverflow.com/questions/31439092/package-dplyr-is-not-available-for-r-version-3-1-1

我如何查看函数的源代码?

我想看一个函数的源代码,看看它是如何工作的。 我知道我可以通过在提示符下键入它的名字来打印一个函数: > t function (x) UseMethod("t") <bytecode: 0x2332948> <environment: namespace:base> 在这种情况下, UseMethod("t")是什么意思? 如何find实际使用的源代码,例如: t(1:10) ? 在其他情况下,我可以看到R函数被调用,但我找不到这些函数的源代码。 > ts.union function (…, dframe = FALSE) .cbind.ts(list(…), .makeNamesTs(…), dframe = dframe, union = TRUE) <bytecode: 0x36fbf88> <environment: namespace:stats> > .cbindts Error: object '.cbindts' not found > .makeNamesTs Error: object '.makeNamesTs' not found 我如何find像.cbindts和.makeNamesTs这样的函数? 在其他情况下,有一些R代码,但大部分工作似乎是在别的地方完成的。 > matrix function […]

将逗号分隔的列拆分成单独的行

我有一个数据框,像这样: data.frame(director = c("Aaron Blaise,Bob Walker", "Akira Kurosawa", "Alan J. Pakula", "Alan Parker", "Alejandro Amenabar", "Alejandro Gonzalez Inarritu", "Alejandro Gonzalez Inarritu,Benicio Del Toro", "Alejandro González Iñárritu", "Alex Proyas", "Alexander Hall", "Alfonso Cuaron", "Alfred Hitchcock", "Anatole Litvak", "Andrew Adamson,Marilyn Fox", "Andrew Dominik", "Andrew Stanton", "Andrew Stanton,Lee Unkrich", "Angelina Jolie,John Stevenson", "Anne Fontaine", "Anthony Harvey"), AB = […]

如何按列sorting数据框?

我想sorting一个data.frame多列。 例如,在下面的data.frame中,我想按列z (降序)然后按列b (升序)sorting: dd <- data.frame(b = factor(c("Hi", "Med", "Hi", "Low"), levels = c("Low", "Med", "Hi"), ordered = TRUE), x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9), z = c(1, 1, 1, 2)) dd bxyz 1 Hi A 8 1 2 Med D 3 1 3 Hi A 9 1 […]

如何将一个因子转换为整数\数字而不会丢失信息?

当我把一个因子转换成数字或整数时,我得到了底层的代码,而不是数值。 f <- factor(sample(runif(5), 20, replace = TRUE)) ## [1] 0.0248644019011408 0.0248644019011408 0.179684827337041 ## [4] 0.0284090070053935 0.363644931698218 0.363644931698218 ## [7] 0.179684827337041 0.249704354675487 0.249704354675487 ## [10] 0.0248644019011408 0.249704354675487 0.0284090070053935 ## [13] 0.179684827337041 0.0248644019011408 0.179684827337041 ## [16] 0.363644931698218 0.249704354675487 0.363644931698218 ## [19] 0.179684827337041 0.0284090070053935 ## 5 Levels: 0.0248644019011408 0.0284090070053935 … 0.363644931698218 as.numeric(f) ## [1] 1 1 3 […]

将dataframe从宽转换为长格式

我有一些麻烦将我的data.frame从宽表转换为长表。 目前看起来像这样: wide <- read.table(textConnection( "Code Country 1950 1951 1952 1953 1954 AFG Afghanistan 20,249 21,352 22,532 23,557 24,555 ALB Albania 8,097 8,986 10,058 11,123 12,246"), header=TRUE) 这产生的数据框架wide如下所示: Code Country 1950 1951 1952 1953 1954 AFG Afghanistan 20,249 21,352 22,532 23,557 24,555 ALB Albania 8,097 8,986 10,058 11,123 12,246 我想变换成一个很长的data.frame例如: Code Country Year Value AFG […]

分组函数(tapply,by,aggregate)和* apply family

每当我想在R中“映射”py时,我通常会尝试在apply系列中使用函数。 然而,我从来没有完全理解它们之间的差异 – 如何将input/分组input的function,输出的结果,甚至是input的内容我经常只是通过他们,直到我得到我想要的。 有人可以解释如何使用哪一个? 我目前(可能不正确/不完整)的理解是… sapply(vec, f) :input是一个向量。 输出是一个向量/matrix,其中元素i是f(vec[i]) ,给出一个matrix,如果f有一个多元素输出 lapply(vec, f) :与sapply相同,但是输出是列表? apply(matrix, 1/2, f) :input是一个matrix。 输出是一个向量,其中元素i是f(matrix的行/列) tapply(vector, grouping, f) :output是一个matrix/数组,其中matrix/数组中的一个元素是该vector的分组g处的f的值,并且g被推到行/列名 by(dataframe, grouping, f) :让g是一个分组。 将f应用于组/数据框的每一列。 漂亮的打印分组和每列的f的值。 aggregate(matrix, grouping, f) :类似于,但不是漂亮地打印输出,聚合将所有东西都粘到数据框中。 旁边的问题:我还没有学会plyr或重塑 – 将plyr或reshape完全取代所有这些?