小编wen*_*wen的帖子

如何删除R中的特定特殊字符

我有一些像这样的句子.

c = "In Acid-base reaction (page[4]), why does it create water and not H+?" 
Run Code Online (Sandbox Code Playgroud)

我想删除除'?&+ - /之外的所有特殊字符

我知道如果我想删除所有特殊字符,我可以简单地使用

gsub("[[:punct:]]", "", c)
"In Acidbase reaction page4 why does it create water and not H"
Run Code Online (Sandbox Code Playgroud)

但是,一些特殊字符如+ - ?也被删除,我打算保留.

我试图创建一个特殊字符串,我可以在这样的代码中使用

gsub("[special_string]", "", c)
Run Code Online (Sandbox Code Playgroud)

我能做的最好的就是想出这个

cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")
Run Code Online (Sandbox Code Playgroud)

但是,以下代码不起作用

gsub("[cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")]", "", c)
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能删除特殊字符,除了一些我要保留的字符?

谢谢

regex r character gsub

14
推荐指数
3
解决办法
5万
查看次数

如果R中有0,如何填写前面的数字?

我有一串数字:

n1 = c(1, 1, 0, 6, 0, 0, 10, 10, 11, 12, 0, 0, 19, 23, 0, 0)
Run Code Online (Sandbox Code Playgroud)

我需要用它前面的相应数字替换0来得到:

n2 = c(1, 1, 1, 6, 6, 6, 10, 10, 11, 12, 12, 12, 19, 23, 23, 23)
Run Code Online (Sandbox Code Playgroud)

我如何从n1到n2?

提前致谢!

replace numbers r sequence

13
推荐指数
5
解决办法
528
查看次数

anaconda的xgboost安装问题

我正在使用Anaconda.我首先切换到Python2(版本2.7.11).

python -V
Python 2.7.11 :: Continuum Analytics, Inc.
Run Code Online (Sandbox Code Playgroud)

我使用以下命令在anaconda中安装xgboost.

conda install -c https://conda.anaconda.org/akode xgboost
Run Code Online (Sandbox Code Playgroud)

然后我检查了xgboost是否已安装.

conda list
xgboost                   0.3                      py27_0    akode
Run Code Online (Sandbox Code Playgroud)

我在终端运行python,导入xgboost并出现以下错误.

import xgboost as xgb

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "//anaconda/envs/wen2/lib/python2.7/site-packages/xgboost.py", line 82, in <module>
    xglib = load_xglib()
  File "//anaconda/envs/wen2/lib/python2.7/site-packages/xgboost.py", line 59, in load_xglib
    lib = ctypes.cdll.LoadLibrary(lib_path[0])
  File "//anaconda/envs/wen2/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary
    return self._dlltype(name)
  File "//anaconda/envs/wen2/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(//anaconda/envs/wen2/lib/python2.7/site-packages/libxgboostwrapper.so, 6): Library not loaded: …
Run Code Online (Sandbox Code Playgroud)

python install anaconda xgboost

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

如何使用正则表达式删除R中具有特定开头和结尾的字符串段?

我有一个字符串.

str = c("F14 : M114L","W15 : M116L, W15 : M118L","W15 : D111L, F14 : E112L, F14 : M116L")
Run Code Online (Sandbox Code Playgroud)

目标是删除:和L之间的任何东西(也包括:)前面的空白区域,这样我最终会拥有

"F14", "W15, W15", "W15, F14, F14"
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用

gsub(" : [[:alnum:]]L", "", str)
Run Code Online (Sandbox Code Playgroud)

但显然它不起作用.不知道是否有类似通配符的东西可以代表任意数量的数字和字符:和L.

regex replace r wildcard

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

如何在R中使用emo包在ggplot2中显示表情符号?

我试图使用包ggplot2来绘制一些图表,其中emojis显示为标签emo.我从这篇文章中学到了它,但它根本不起作用.

我之前尝试过这个emojifont包,但它是一种字体类型,可以呈现黑白的表情符号,并且需要使用例如打开一个新的图形设备quartz().

为了解决颜色问题,Tino建议(参考上面的帖子)使用gridSVG包,即在创建新的图形设备和绘图后emojifont,将图形保存ps = grid.export("emoji.svg", addClass=T)在本地磁盘上作为一个.svg文件,以一种彩色风格呈现表情符号.

我真的很感激解决方案:(a)提供丰富多彩的表情符号和(b)直接显示图表,这与常规ggplot用例兼容.

library(ggplot2)
library(emo)

names = c("smile","school","office","blush","smirk","heart_eyes")
n = length(names):1
e = sapply(names, emo::ji)
dat = data.frame(emoji_name = names, n = n, emoji = e, stringsAsFactors = F)

ggplot(data=dat, aes(emoji_name, n)) + 
  geom_bar(stat = "identity") +
  scale_x_discrete(breaks = dat$emoji_name, labels = dat$emoji) +
  coord_flip()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我的R版本是

> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 emoji

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

如何从R中的字符串中仅删除"实际数字"

我有一串数字和字符

c2 = "list of 2nd C2 H2O 1 12 123"
Run Code Online (Sandbox Code Playgroud)

我需要摆脱所有数字,即实际数字,即1,12,123,但不是那些属于字符集的数字,即2nd,C2,H2O.

到目前为止,我提出的最佳解决方案是这个

gsub("? [[:digit:]]*", " ", c2)
"list of nd C2 H2O   "
Run Code Online (Sandbox Code Playgroud)

它成功地摆脱了1 12 123,同时保留了C2 H2O.但是,我在第二节输掉了2.

我没办法.

谢谢!

regex numbers r character gsub

7
推荐指数
1
解决办法
2823
查看次数

根据一行中的值选择r中数据框中的行

我有一个玩具数据框架.

a = rep(1:5, each=3)
b = rep(c("a","b","c"), each = 5)
df = data.frame(a,b)

   a b
1  1 a
2  1 a
3  1 a
4  2 a
5  2 a
6  2 b
7  3 b
8  3 b
9  3 b
10 4 b
11 4 c
12 4 c
13 5 c
14 5 c
15 5 c
Run Code Online (Sandbox Code Playgroud)

我也有一个索引.

idx = c(2,3,5)
Run Code Online (Sandbox Code Playgroud)

我想选择id为id为2,3或5的所有行.

我试过以下几点; 但它们都不起作用.

df[df$a==idx, ]
subset(df, df$a==idx)
Run Code Online (Sandbox Code Playgroud)

这不应该太难.

select row r dataframe

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

如何缩小图例框的内边距

我正在绘制如下图表.我用来生成图例的代码是

legend(4, 20, c("Placebo", "Progabide"), lty=1:2, pch=c(1,16), col=1:2, cex=0.8)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题是内边距(垂直方向)太大,我想减少它.我想缩小内部边缘的另一种方法是进一步减少"cex".但随后盒子里的文字也会变小.有没有办法减少盒子但不减少其内容.

r margins legend

7
推荐指数
1
解决办法
5372
查看次数

如何使用一些apply函数来解决R中需要两个for循环的问题

我有一个名为"mat"的矩阵和一个名为"center"的较小矩阵.

temp = c(1.8421,5.6586,6.3526,2.904,3.232,4.6076,4.8,3.2909,4.6122,4.9399)
mat = matrix(temp, ncol=2)
       [,1]   [,2]
[1,] 1.8421 4.6076
[2,] 5.6586 4.8000
[3,] 6.3526 3.2909
[4,] 2.9040 4.6122
[5,] 3.2320 4.9399

center = matrix(c(3, 6, 3, 2), ncol=2)

     [,1] [,2]
[1,]    3    3
[2,]    6    2
Run Code Online (Sandbox Code Playgroud)

我需要计算每排垫子与每排中心之间的距离.例如,mat [1,]和center [1,]的距离可以计算为

diff = mat[1,]-center[1,]
t(diff)%*%diff
        [,1]
[1,] 3.92511
Run Code Online (Sandbox Code Playgroud)

同样,我可以找到mat [1,]和center [2,]的距离

diff = mat[1,]-center[2,]
t(diff)%*%diff
         [,1]
[1,] 24.08771
Run Code Online (Sandbox Code Playgroud)

对于每排垫子重复这个过程,我最终会结束

          [,1]      [,2]
[1,]  3.925110 24.087710
[2,] 10.308154  7.956554
[3,] 11.324550  1.790750
[4,]  2.608405 16.408805
[5,]  3.817036 16.304836
Run Code Online (Sandbox Code Playgroud)

我知道如何使用for循环实现它.我真的希望有人可以通过某种apply()函数告诉我如何使用它,也许mapply()我想.

谢谢

for-loop r apply

6
推荐指数
1
解决办法
170
查看次数

R中\ <和\>的意外不对称正则表达式行为

让我用下面的例子来说明.

str = "we are friends"
Run Code Online (Sandbox Code Playgroud)

帮助文档说明了这一点

符号\ <和\>匹配单词开头和结尾的空字符串.

因此,预计会发生以下情况,其中在每个单词的末尾添加一个空格.

gsub("\\>"," ", str)
[1] "we  are  friends "
Run Code Online (Sandbox Code Playgroud)

但是,为什么它在使用时不起作用

gsub("\\<"," ", str)
[1] " w e  a r e  f r i e n d s"
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会这样吗?如果我想在每个单词的前面添加额外的空格,我需要做什么?

regex r

5
推荐指数
1
解决办法
73
查看次数