小编Car*_*oft的帖子

按字母顺序排序时,字母"y"出现在"i"之后

当使用函数时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.

locale r alphabetical-sort

45
推荐指数
2
解决办法
3865
查看次数

R的交叉产品功能是什么?

我觉得愚蠢的问,但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一般情况下做了什么.

另请参阅R - 计算矢量的交叉乘积(物理)

r

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

一元运算符过载:风险?

在我继续寻求避免在一些简单命令中使用括号时,我编写了以下运算符来创建一个新的图形窗口.我的问题是:除了明显无法在我的变量"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)

r operator-overloading

18
推荐指数
1
解决办法
1653
查看次数

避免臭名昭着的"eval(parse())"构造

好的,所以我正在运行一些循环来处理存储在列表对象中的数据.我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(解析(...))通常不是最理想的

parsing interpreter expression eval r

18
推荐指数
1
解决办法
3153
查看次数

是否可以在R中读取geoJSON或topoJSON文件来绘制等值区域图?

topoJSONgeoJSON在互联网上绘制地图时,文件非常常见.是否可以导入它们R来绘制等值区域图?

r geojson topojson

18
推荐指数
1
解决办法
8787
查看次数

如何将"nothing"作为参数传递给`[`for subsetting?

我希望能够构建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; 后者慢几倍,没有真正意外.

r subset do.call

15
推荐指数
3
解决办法
551
查看次数

无法打开并行群集的套接字

我正在尝试使用该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)

parallel-processing r

14
推荐指数
1
解决办法
7870
查看次数

是否有一个等同于unlist()的S4?

我有使用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 s4

12
推荐指数
1
解决办法
656
查看次数

重复矢量的字母

是否有在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

11
推荐指数
3
解决办法
6226
查看次数

如何将复杂的方程式放入R公式中?

我们将树的直径作为预测因子,树高作为因变量.对于这种数据存在许多不同的方程式,我们尝试对其中的一些进行建模并比较结果.

但是,我们无法弄清楚如何正确地将一个方程式放入相应的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,bc估计,这是我们感兴趣的.

现在有问题的等式:

在此输入图像描述

试着像这样适合它:

form2 <- …
Run Code Online (Sandbox Code Playgroud)

statistics regression r data-modeling linear-regression

10
推荐指数
3
解决办法
5681
查看次数