有没有人知道将数字的文本表示转换为实际数字的函数,例如20305年的"二万三千五".我在数据帧行中编写了数字,并希望将它们转换为数字.
在包qdap中,您可以用单词替换数字表示的数字(例如,1001变为一千),但不是相反:
library(qdap)
replace_number("I like 346457 ice cream cones.")
[1] "I like three hundred forty six thousand four hundred fifty seven ice cream cones."
Run Code Online (Sandbox Code Playgroud) 我有一个函数来从data.table中删除空列,并将其包含在一个包中.
不知何故,当我加载函数时,它可以工作,但是当我从包中调用它时,它不起作用.问题:当我从包中调用它时,为什么不运行此函数?
包中的任何函数都没有require(data.table)或库(data.table).DESCRIPTION文件包含:Imports:data.table.所以在我自己的包中使用data.table包是满意的.
library(data.table)
df = data.table(a = c(1,2,3), b = c(NA, NA, NA), c = c(4,5,6))
library(cr360)
remove.emptycols(df) # from package
Error in .subset(x, j) : invalid subscript type 'list'
# now open function from mypackage and run again:
# source("./mypackage/R/fun_remove_emptycols.R")
remove.emptycols(df)
a c
1: 1 4
2: 2 5
3: 3 6
Run Code Online (Sandbox Code Playgroud)
功能:
#' Remove empty columns
#'
#' Counts the number of NA values in the columns and counts the number of rows.
#' @param …Run Code Online (Sandbox Code Playgroud) 我有许多PDF文档,我已将其读入带库的语料库中tm.如何将语料库分解成句子?
可以readLines通过sentSplit从包qdap[*] 读取文件来完成.该功能需要数据帧.它还需要放弃语料库并单独阅读所有文件.
如何在语料库中传递函数sentSplit{ qdap} tm?或者,还有更好的方法?.
注意:sentDetect 库中有一个函数,openNLP现在是Maxent_Sent_Token_Annotator- 同样的问题适用:如何将它与语料库[tm]结合起来?
在计算标准偏差时,我有一个意想不到的[至少对我来说]错误.想法[*]是将所有缺失值转换为1和0否则.然后在完成关联之前提取具有一些[但不是全部]缺失值的变量.使用sd函数尝试提取步骤,但它失败[为什么?].
library(VIM)
data(sleep) # dataset with missing values
x = as.data.frame(abs(is.na(sleep))) # converts all NA to 1, otherwise 0
y = x[which(sd(x) > 0)] # attempt to extract variables with missing values
Error in is.data.frame(x) :
(list) object cannot be coerced to type 'double'
# convert to double
z = as.data.frame(apply(x, 2, as.numeric))
y = z[which(sd(z) > 0)]
Error in is.data.frame(x) :
(list) object cannot be coerced to type 'double'
Run Code Online (Sandbox Code Playgroud)
[*] R in Action,Robert Kabacoff
我有一项调查,其中必须为问题分配唯一的ID.有些问题多次出现.这意味着还有一层额外的问题.在下面的示例数据中,仅包括第一层.
问题:如何按出现顺序分配唯一索引?此处提供的解决方案按字母顺序排列 我可以订购这些因素,但这会破坏在R中实现它的目的[有很多问题需要排序].
library(data.table)
dt = data.table(question = c("C", "C", "A", "B", "B", "D"),
value = c(10,20,30,40,20,30))
dt[, idx := as.numeric(as.factor(question))]
Run Code Online (Sandbox Code Playgroud)
得到:
question value idx
# 1: C 10 3
# 2: C 20 3
# 3: A 30 1
# 4: B 40 2
# 5: B 20 2
# 6: D 30 4
# but required is:
dt[, idx.required := c(1, 1, 2, 3, 3, 4)]
Run Code Online (Sandbox Code Playgroud) 当我尝试在ggplot2中创建一个并行坐标时,我得到了一个不推荐使用的消息:
require(ggplot2)
ggpcp(mtcars) + geom_line()
Run Code Online (Sandbox Code Playgroud)
警告消息:不推荐使用'ggpcp'.请参阅帮助("已弃用")
然而,ggplot文档没有说明这一点:http://docs.ggplot2.org/current/ggpcp.html .
某个地方有新的pcp功能吗?
闪亮的selectInput小部件需要以这种格式命名的选择列表:
choices = list(
"mpg" = 1,
"cyl" = 2,
"disp" = 3,
"hp" = 4
# ..... etc
)
Run Code Online (Sandbox Code Playgroud)
进入我的闪亮应用程序的数据框将没有相同的变量名称,所以我想动态生成名称列表.
这是一次尝试:
data(mtcars)
choices = data.frame(
var = names(mtcars),
num = 1:length(names(mtcars))
)
> head(choices)
var num mylist
1 mpg 1 "mpg" = 1
2 cyl 2 "cyl" = 2
3 disp 3 "disp" = 3
4 hp 4 "hp" = 4
5 drat 5 "drat" = 5
6 wt 6 "wt" = 6
paste(choices$mylist, collapse = ",")
Run Code Online (Sandbox Code Playgroud)
这看起来很接近,但它不起作用:
... …Run Code Online (Sandbox Code Playgroud) 在构建mypackage时,一切似乎都有效:
library(devtools)
build(vignettes = T, manual = T)
* checking for file ‘/storage/Documents/client/validate/mypackage/DESCRIPTION’ ... OK
* preparing ‘mypackage’:
* checking DESCRIPTION meta-information ... OK
* installing the package to build vignettes
* creating vignettes ... OK
* checking for LF line-endings in source and make files
* checking for empty or unneeded directories
* building ‘mypackage_0.1.tar.gz’
[1] "/storage/Documents/client/validate/mypackage_0.1.tar.gz"
Run Code Online (Sandbox Code Playgroud)
但是我找不到PDF手册和小插图.
Vignette:遵循此处所述的工作流程,使用RStudio/devtools/markdown.然而:
vignette("mypackage")警告信息:未找到插图'mypackage'
对于PDF手册,我试过这个,但没有成功.
所以,我的问题是:我在哪里可以找到PDF手册和小插图?
在data.table v.1.9.6你可以在列像这样分割变量:
library(data.table)
DT = data.table(x=c("A/B", "A", "B"), y=1:3)
DT[, c("c1", "c2") := tstrsplit(x, "/", fixed=TRUE)][]
Run Code Online (Sandbox Code Playgroud)
所需的分割数[上面:2]并不总是事先知道.当已知拆分数时,如何生成所需的变量名?
n = 2 # desired number of splits
# naive attempt to build required string
m = paste0("'", "myvar", 1:n, "'", collapse = ",")
m = paste0("c(", m, ")" )
# [1] "c('myvar1','myvar2','myvar3')"
DT[, m := tstrsplit(x, "/", fixed=TRUE)][] # doesn't work
Run Code Online (Sandbox Code Playgroud) 我试图将名称设置为嵌套列表.下面的示例显示了列表的结构.这里的内容是"类",在我的情况下有表.我想将第一个元素命名为varA,将第二个元素命名为var B.这将给出类似于:
[[varA1]]
[[varA1]][[varB1]]
Run Code Online (Sandbox Code Playgroud)
这是嵌套列表的结构:
varA = paste0("varA", 1:10)
varB = paste0("varB", 1:3)
library(foreach)
tabs = foreach(j = 1:length(varA)) %do% {
main = varA[j]
mytabs = lapply(1:length(varB), class)
}
Run Code Online (Sandbox Code Playgroud)
如何将名称设置为此列表?