Tag: r

在列中分隔分隔string并插入为新行

我有一个数据框如下: +—–+——-+ | V1 | V2 | +—–+——-+ | 1 | a,b,c | | 2 | a,c | | 3 | b,d | | 4 | e,f | | . | . | +—–+——-+ 每个字母都是用逗号分隔的字符。 我想在每个逗号分割V2,并插入拆分string作为新的行。 例如,期望的输出将是: +—-+—-+ | V1 | V2 | +—-+—-+ | 1 | a | | 1 | b | | […]

你如何具体命令ggplot2 x轴而不是按字母顺序?

我试图使用ggplot2使用geom_tiles函数,这里是我的代码如下: p<-ggplot(data,aes(Treatment,organisms))+geom_tile(aes(fill=S))+ scale_fill_gradient(low = "black",high = "red") + scale_x_discrete(expand = c(0, 0)) + scale_y_discrete(expand = c(0, 0)) + theme(legend.position = "right", axis.ticks = element_blank(), axis.text.x = element_text(size = base_size, angle = 90, hjust = 0, colour = "black"), axis.text.y = element_text(size = base_size, hjust = 1, colour = "black")). 数据是我的data.csv文件 我的X轴是治疗types 我的Y轴是有机体的types 我不太熟悉命令和编程,而且我在这方面比较新。 我只是想能够指定在x轴上的标签的顺序。 在这种情况下,我试图指定“治疗”的顺序。 […]

在data.table中设置密钥的目的是什么?

我正在使用data.table,有许多function需要我设置一个键(例如X[Y] )。 因此,我希望了解一个密钥在我的数据表中正确设置密钥的function。 我读的一个来源是?setkey 。 setkey()对data.table进行sorting并将其标记为已sorting。 sorting的列是关键。 密钥可以是任何顺序的任何列。 列总是按升序排列。 该表通过引用进行更改。 除了一列之外的临时工作记忆,完全没有拷贝。 这里我的外卖是一个关键将“sorting”data.table,导致与order()非常相似的效果。 但是,这并没有解释拥有钥匙的目的。 data.table FAQ 3.2和3.3解释: 3.2我在大桌子上没有钥匙,但分组依然很快。 这是为什么? data.table使用基数sorting。 这比其他sortingalgorithm显着快。 基数只针对整数,参见?base::sort.list(x,method="radix") 。 这也是为什么setkey()很快的原因之一。 当没有密钥设置,或者我们按照与密钥不同的顺序进行分组时,我们称它为特设。 3.3为什么密钥中的列按分组速度快于临时密钥? 由于每个组在RAM中是连续的,因此可以最小化页面抓取,并且可以批量复制内存(C中的memcpy ),而不是在C中循环。 从这里,我猜想设置一个关键点允许R使用“基数sorting”优于其他algorithm,这就是为什么它更快。 10分钟快速入门指南还有一个关键指南。 按键 首先考虑data.frame,特别是rownames(或英文,行名)。 也就是说,属于单个行的多个名称。 属于单行的多个名字? 这不是我们习惯的data.frame。 我们知道每行至多有一个名字。 一个人至less有两个名字,一个名字和一个第二名字。 这对组织一个电话号码簿很有用,例如,按照姓氏sorting,然后名字sorting。 但是,data.frame中的每一行只能有一个名字。 一个键由一列或多列rownames组成,可以是整数,因子,字符或其他类,而不是简单的字符。 此外,行按键sorting。 因此,data.table最多只能有一个键,因为它不能以多种方式sorting。 唯一性不强制执行,即允许重复键值。 由于行按键sorting,因此键中的任何重复项都将连续出现 电话簿有助于理解一个关键是什么,但是与具有一个因子列相比,关键是没有什么不同。 而且,这并不能解释为什么需要一个密钥(特别是使用某些函数)以及如何select列来设置密钥。 另外,在一个data.table中,随着时间的推移,如果将其他列设置为key,也可能会混淆time列,这使得它更加令人困惑,因为我不知道是否允许将其他列设置为键。 有人能够赐教吗?

2个string如何连接?

如何合并/合并R中的两个值? 例如,我有: tmp = cbind("GAD", "AB") >tmp [,1] [,2] [1,] "GAD" "AB" 我的目标是将tmp作为一个string tmp_new="GAD,AB" 哪个函数可以为我做这个?

R中的全局和局部variables

我是R的新手,我对R中局部和全局variables的使用感到困惑。 我在互联网上看到一些post说如果我使用=或<-我将分配在当前环境中的variables,并与<<-我可以访问一个函数内的全局variables。 然而,正如我记得在C ++局部variables出现,每当你在括号{}内声明一个variables,所以我想知道这是否相同的R? 还是只是在R中的函数 ,我们有局部variables的概念。 我做了一个小实验,这似乎表明,只有括号是不够的,我有什么问题吗? { x=matrix(1:10,2,5) } print(x[2,2]) [1] 4

在数据框中随机行示例

我正在努力寻找合适的函数来返回指定数量的随机选取的行,而不是从R语言的数据框中进行replace? 谁能帮我吗?

如何从一个函数返回多个值?

仍然试图进入R逻辑…什么是“最好”的方式来解压(在LHS上)返回多个值的函数的结果? 我显然不能这样做: R> functionReturningTwoValues <- function() { return(c(1, 2)) } R> functionReturningTwoValues() [1] 1 2 R> a, b <- functionReturningTwoValues() Error: unexpected ',' in "a," R> c(a, b) <- functionReturningTwoValues() Error in c(a, b) <- functionReturningTwoValues() : object 'a' not found 我必须真的做到以下几点吗? R> r <- functionReturningTwoValues() R> a <- r[1]; b <- r[2] 或者R程序员会写更类似这样的东西: R> […]

清理因子水平(折叠多个层次/标签)

什么是最有效(即有效/适当)的方式来清理一个包含多个层次的因素需要被折叠? 也就是说,如何将两个或更多的因素水平合并为一个。 下面是一个例子,其中“是”和“是”两个级别应该折叠为“是”,“否”和“N”折叠为“否”: ## Given: x <- c("Y", "Y", "Yes", "N", "No", "H") # The 'H' should be treated as NA ## expectedOutput [1] Yes Yes Yes No No <NA> Levels: Yes No # <~~ NOTICE ONLY **TWO** LEVELS 一种select当然是用手和sub打交道。 另一种方法是允许重复标签,然后放下它们 ## Duplicate levels ==> "Warning: deprecated" xf <- factor(x, levels=c("Y", "Yes", "No", "N"), labels=c("Yes", […]

在R中嵌套ifelse语句

我在这里是新来的,在R我是初学者。我在Windows7上使用最新的R 3.0.1。 我仍然在学习如何将SAS代码翻译成R,并得到警告。 我需要明白我犯的错误。 我想做的是创造一个总结和区分一个人口的大陆,海外,外国人的变数。 我有一个数据库与2个variables: id国籍: idnat (法语,外国人), 如果idnat是法语的话: id出生地: idbp (大陆,殖民地,海外) 我想将idnat和idbp的信息idbp到一个名为idnat2的新variables中: 状态:k(大陆,海外,外国人) 所有这些variables都使用“字符types”。 列idnat2中的预期结果: idnat idbp idnat2 1 french mainland mainland 2 french colony overseas 3 french overseas overseas 4 foreign foreign foreign 这是我想要在R中翻译的SAS代码: if idnat = "french" then do; if idbp in ("overseas","colony") then idnat2 = "overseas"; else idnat2 = "mainland"; […]

控制R中打印输出的小数位数

R中有一个选项来控制数字显示。 例如: options(digits=10) 应该给出计算结果10位直到R会话结束。 在R的帮助文件中,数字参数的定义如下: 位数:控制打印数字值时要打印的位数。 这只是一个build议。 有效值为1 … 22 ,默认为7 所以说这只是一个build议。 如果我喜欢总是显示10位数字,不多或less? 我的第二个问题是,如果我想显示超过22位数字,即更精确的计算(如100位数),该怎么办? 基地R是可能的,还是我需要一个额外的软件包/function呢? 编辑:感谢jmoy的build议,我试过sprintf("%.100f",pi) ,它给了 [1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000" 其中有48位小数。 这是R可以处理的最大限制吗? 实际上pi有无限的小数。