我有一个非常大Data Table的两列.我希望在特定列上应用自定义函数.生成问题的代码如下:
require(data.table)
X <- rep("This is just random text", 1e5)
data <- data.frame(1:1e5, replicate(1, X, simplify=FALSE), stringsAsFactors=FALSE)
colnames(data) <- paste("X", seq_len(ncol(data)), sep="")
DT <- as.data.table(data)
Run Code Online (Sandbox Code Playgroud)
现在,我们有一个大型数据表,看起来像
| X1 | X2 |
|----|-------------------------|
| 1 | This is just random text|
| 2 | This is just random text|
| 3 | This is just random text|
| 4 | This is just random text|
| .. | ... |
Run Code Online (Sandbox Code Playgroud)
如果我想在这个列的任何一个上做一些向量操作,考虑到这个data.table将是非常大的(大约~100M行),该怎么办?
我们来看一个X1列的例子.假设,我想在其上应用以下功能:
Fun4X1 <- function(x){return(x+x*2)}
Run Code Online (Sandbox Code Playgroud)
而 …
我有一个字符串让我这样说
Ankit说:2013年5月13日上午10:55你摇滚
而且,我希望从中获取日期
2013年5月13日
有什么方法可以在R中做到这一点吗?我已经通过以下方式尝试了strptime函数:
strptime("Ankit says: May 13, 2013 at 10:55 am you rock", " %b %d, %Y")
Run Code Online (Sandbox Code Playgroud)
我明白了 "NA"
但是,当我在日期之前没有任何语言的时候尝试它
strptime("May 13, 2013 at 10:55 am you rock", " %b %d, %Y")
Run Code Online (Sandbox Code Playgroud)
我输出为 "2013-05-13"
我也试过正则表达式
grep("Ankit says: May 13, 2013 at 10:55 am you rock", "?(?:[a-zA-Z]*)(\\s+)(?:[0-9]*)(,)(\\s+)(?:[0-9]*)")
Run Code Online (Sandbox Code Playgroud) 我想使用awk删除以下输入文件的第二个字段中":"之后的所有值.
输入
text1 [a:2,b:1,c:4,k:0]
text2 [d:1,a:5,f:3.2]
Run Code Online (Sandbox Code Playgroud)
产量
text1 a,b,c,k
text2 d,a,f
Run Code Online (Sandbox Code Playgroud)
我能够使用R来做到这一点但是对于较大的文件来说这有点慢.