我有一些像这样的句子.
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)
我应该怎么做才能删除特殊字符,除了一些我要保留的字符?
谢谢
我有一串数字:
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?
提前致谢!
我正在使用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) 我有一个字符串.
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.
我试图使用包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) 我有一串数字和字符
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.
我没办法.
谢谢!
我有一个玩具数据框架.
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)
这不应该太难.
我正在绘制如下图表.我用来生成图例的代码是
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".但随后盒子里的文字也会变小.有没有办法减少盒子但不减少其内容.
我有一个名为"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()我想.
谢谢
让我用下面的例子来说明.
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)
有人可以解释为什么会这样吗?如果我想在每个单词的前面添加额外的空格,我需要做什么?