当使用函数时sort(x),x字符在哪里,字母"y"跳到中间,紧跟在字母"i"之后:
> letters
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t"
[21] "u" "v" "w" "x" "y" "z"
> sort(letters)
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "y" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[21] "t" "u" "v" "w" "x" "z"
Run Code Online (Sandbox Code Playgroud)
原因可能是我位于立陶宛,这是"立陶宛式"字母排序,但我需要正常排序.如何在R代码中将排序方法更改回正常状态?
我在Win7上使用R 2.15.2.
我觉得愚蠢的问,但R的crossprod功能对于矢量输入的意图是什么 ?我想计算欧几里得空间中两个向量的交叉积,并错误地尝试使用crossprod.
矢量叉积的一个定义是N = |A|*|B|*sin(theta)θ是两个矢量之间的角度.(方向N垂直于AB平面).另一种计算方法是 N = Ax*By - Ay*Bx.
base::crossprod显然不做这个计算,实际上产生两个输入的矢量点积sum(Ax*Bx, Ay*By).
所以,我可以轻松编写自己的vectorxprod(A,B)函数,但我无法弄清楚crossprod一般情况下做了什么.
在我继续寻求避免在一些简单命令中使用括号时,我编写了以下运算符来创建一个新的图形窗口.我的问题是:除了明显无法在我的变量"newdev"上执行"not"函数之外,我是否有可能"破坏"R中的任何内容?
# function to overload "!" for one purpose only
#this is adapted from the sos package code for "???", credited to Duncan Murdoch.
# Example of how to create a specialized unary operator that doesn't require
# parentheses for its argument. So far as I can tell,
#the only way to do this is to overload an existing function or
# operator which doesn't require parentheses. "?" and "!" meet this requirement.
`!` <- function (e1, e2) {
call …Run Code Online (Sandbox Code Playgroud) 好的,所以我正在运行一些循环来处理存储在列表对象中的数据.我fortune不记得臭名昭着的警告不要使用eval(parse(mystring)),我想到了这个:
Rgames> bar
$foo
$foo$fast
[1] 1 2 3 4 5
$foo$slow
[1] 6 7 8 9 10
$oof
$oof[[1]]
[1] 6 7 8 9 10
$oof[[2]]
[1] 1 2 3 4 5
Rgames> rab<-'bar'
Rgames> do.call('$',list(as.name(rab),'oof'))
[[1]]
[1] 6 7 8 9 10
[[2]]
[1] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
通常我会选择一个列表(其中bar一个是这样的),然后是列表中的一个元素(例如 oof),其中包含我的数据.上面的代码与之相同eval(parse(text=paste(rab,'$','oof',sep=''))).
我正在做这一切,因为我想使用列表的名称而不是[[x]]符号作为安全机制(因为并非所有列表对象的内容都以相同的顺序).我是否应该坚持使用D中的DWin的建议:eval(解析(...))通常不是最理想的?
topoJSONgeoJSON在互联网上绘制地图时,文件非常常见.是否可以导入它们R来绘制等值区域图?
我希望能够构建do.call子集化的公式,而不必识别输入数组中每个维度的实际范围.我遇到的问题是我无法弄清楚如何模仿直接函数x[,,1:n,],其他维度中没有条目意味着"抓住所有元素".
这是一些示例代码,它失败了.据我所知,[或者do.call用索引替换我的NULL列表值1.
x<-array(1:6,c(2,3))
dimlist<-vector('list', length(dim(x)))
shortdim<-2
dimlist[[shortdim]] <- 1: (dim(x)[shortdim] -1)
flipped <- do.call(`[`,c(list(x),dimlist))
Run Code Online (Sandbox Code Playgroud)
我想我可以通过-2*max(dim(x))为每个元素分配值来解决问题dimlist,但是很糟糕.
(FWIW,我有替代功能,可以通过melt/recast或者可怕的"构建一个字符串然后eval(parse(mystring)),但我想要做得更好"来完成所需的工作.")
编辑:作为一个旁边,我运行了这个代码的版本(相当于DWin的TRUE设置)对使用的函数melt & acast; 后者慢几倍,没有真正意外.
我正在尝试使用该parallel包,并发现makeCluster无法完成.我已经跟踪了以下几行newPSOCKnode:
con <- socketConnection("localhost", port = port, server = TRUE,
blocking = TRUE, open = "a+b", timeout = timeout)
Run Code Online (Sandbox Code Playgroud)
该命令停止(授予默认超时值很大).我怀疑这是因为我们的工作计算机上存在一些"过度热心的IT规则",但欢迎任何有关如何跟踪(和修复)问题根源的建议.这是Windows7-64,"Enterprise",R 3.0.1.
更多信息:内部调试会话,我设置timeout < - 10,但它仍然挂起 - 好像socketConnection被困在某处甚至无法检查超时值.
这是与Richie Cotton的数据相同的转储:
Browse[3]> ls.str()
arg : chr "parallel:::.slaveRSOCK()"
cmd : chr "\"C:/Users/carl.witthoft/Documents/R/R-3.0.1/bin/x64/Rscript\" -e \"parallel:::.slaveRSOCK()\" MASTER=localhost PORT=11017 OUT="| __truncated__
env : chr "MASTER=localhost PORT=11017 OUT=/dev/null TIMEOUT=2592000 METHODS=TRUE XDR=TRUE"
machine : chr "localhost"
manual : logi FALSE
master : chr "localhost"
methods : logi TRUE …Run Code Online (Sandbox Code Playgroud) 我有使用S4对象及其插槽的经验,所以我知道如何访问特定的插槽和子插槽.我想学习的是如何以unlist拆分S3列表的方式对对象进行"去插槽" .
我的直接目标是让我的一个玩具的S4对应物返回一个物体的元素数量:
lssize<-function(items){
if (any(sapply(sapply(items,get),typeof)=='closure')){
warning('Closures in list, will ignore.')
items<-items[(sapply(sapply(bar,get),typeof)=='closure')!=TRUE]
}
sizes<-sapply(sapply(sapply(sapply(items,get,simplify=F), unlist,simplify=F), as.vector,simplify=F), length)
return(sizes)
}
Run Code Online (Sandbox Code Playgroud)
(没有公平地笑我的代码:-)).我希望不必编写一些递归例程,一次提取一个插槽来转换它们.
编辑:我知道object.size会返回bytecount; 不是我在这里.
是否有在R中创建重复字母列表的功能?
就像是
letters[1:30]
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[20] "t" "u" "v" "w" "x" "y" "z" NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
但不是NA,我希望输出继续aa,bb,cc,dd ......
我们将树的直径作为预测因子,树高作为因变量.对于这种数据存在许多不同的方程式,我们尝试对其中的一些进行建模并比较结果.
但是,我们无法弄清楚如何正确地将一个方程式放入相应的R formula格式中.
该trees数据组中R,可以使用,例如,
data(trees)
df <- trees
df$h <- df$Height * 0.3048 #transform to metric system
df$dbh <- (trees$Girth * 0.3048) / pi #transform tree girth to diameter
Run Code Online (Sandbox Code Playgroud)
首先,似乎运作良好的等式的例子:

form1 <- h ~ I(dbh ^ -1) + I( dbh ^ 2)
m1 <- lm(form1, data = df)
m1
Call:
lm(formula = form1, data = df)
Coefficients:
(Intercept) I(dbh^-1) I(dbh^2)
27.1147 -5.0553 0.1124
Run Code Online (Sandbox Code Playgroud)
系数a,b并c估计,这是我们感兴趣的.
现在有问题的等式:

试着像这样适合它:
form2 <- …Run Code Online (Sandbox Code Playgroud) r ×10
do.call ×1
eval ×1
expression ×1
geojson ×1
interpreter ×1
locale ×1
parsing ×1
regression ×1
s4 ×1
statistics ×1
subset ×1
topojson ×1