小编rum*_*cho的帖子

如何将矢量转换为R中的矩阵?

我有一个包含49个数值的向量.我希望有一个7x7数字矩阵.

我可以使用某种方便的自动转换语句,还是必须将7个单独的列分配正确的向量子集分配给新的矩阵?我希望有一些类似于oposite的东西c(myMatrix),当然可以选择给出我想要的行数和/或列数.

r vector matrix

52
推荐指数
2
解决办法
11万
查看次数

如何通过一个降序列和一个升序列来订购数据框?

我有一个数据框,看起来像这样:

    P1  P2  P3  T1  T2  T3  I1  I2
1   2   3   5   52  43  61  6   "b"
2   6   4   3   72  NA  59  1   "a"
3   1   5   6   55  48  60  6   "f"
4   2   4   4   65  64  58  2   "b"
Run Code Online (Sandbox Code Playgroud)

我希望按I1按降序排序,I1中的值与I2中的值相同,按升序排列,按顺序获取行1 3 4 2.但是order函数似乎只接受一个decreasing参数,然后是TRUE或者同时FALSE为所有排序向量.如何让我的排序正确?

sorting r dataframe

49
推荐指数
4
解决办法
12万
查看次数

在R中,如何获得某些向量值的所有可能组合?

背景:我有一个带一些参数的函数.我想为所有可能的参数组合提供函数的结果.

一个简化的例子:

f <- function(x, y) { return paste(x, y, sep=",")} 
colors = c("red", "green", "blue") 
days = c("Monday", "Tuesday") 
Run Code Online (Sandbox Code Playgroud)

我希望我的结果看起来像

     color    day         f    
[1,] "red"    "Monday"    "red,Monday" 
[2,] "red"    "Tuesday"   "red,Tuesday"
[3,] "green"  "Monday"    "green,Monday"
[4,] "green"  "Tuesday"   "green,Tuesday"
[5,] "blue"   "Monday"    "blue,Monday"
[6,] "blue"   "Tuesday"   "blue,Tuesday"
Run Code Online (Sandbox Code Playgroud)

我的想法是创建一个带有列的矩阵,colorday使用现有向量填充它,colorsdays为结果初始化一个空列,然后使用循环为每个矩阵行调用f一次,并将结果写入最后一列.但我不知道如何轻松地生成从基体colorsdays载体.我尝试搜索它,但我得到的所有结果都是针对该combn功能的,它做了不同的事情.

在这个简化的案例中,colorsdays是因素,但在我的实例中,情况并非如此.函数的一些参数是整数,所以我的真实矢量可能看起来更像1, 2, 3,并且函数将要求它作为数字传递给它.所以请不要依赖于因子级别的解决方案,如果它们不能以某种方式用于处理整数.

r combinatorics

9
推荐指数
1
解决办法
7532
查看次数

如何将矢量分组到矢量列表?

我有一些看起来像这样的数据(例如假数据):

dressId        color 
6              yellow 
9              red
10             green 
10             purple 
10             yellow 
12             purple 
12             red 
Run Code Online (Sandbox Code Playgroud)

其中颜色是因子向量.不能保证该因子的所有可能水平实际上都出现在数据中(例如,颜色"蓝色"也可以是其中一个水平).

我需要一个矢量列表,将每件衣服的可用颜色分组:

[[1]]
yellow  

[[2]] 
red    

[[3]] 
green purple yellow 

[[4]] 
purple red 
Run Code Online (Sandbox Code Playgroud)

保留连衣裙的ID会很好(例如,这个列表是第二列的数据帧,ID是第一列),但不是必需的.

我写了一个循环,它遍历行的数据帧行,而下一个ID是相同的,它将颜色添加到矢量.(我确信数据按ID排序).当第一列中的ID更改时,它会将向量添加到列表中:

result <- NULL 
while(blah blah) 
{
    some code which creates the vector called "colors" 
    result[[dressCounter]] <- colors 
    dressCounter <- dressCounter + 1
}
Run Code Online (Sandbox Code Playgroud)

在努力获得所有必要的计数变量之后,我发现我不高兴它不起作用.第一次colors

[1] yellow
Levels: green yellow purple red blue
Run Code Online (Sandbox Code Playgroud)

并且它被强制转换成整数,所以result变成了2.

在第二个循环重复中,colors只包含红色,并result成为一个简单的整数向量[1] 2 4. …

grouping r list vector

7
推荐指数
3
解决办法
7119
查看次数

如何在Scala中返回None

对于我的第一个Scala程序,我正在尝试编写一个小工具,它将XML文件从一个模式转换为另一个模式.

我开始编写一个方法,它将为我提供文件内容:

  def loadFile(filename: String, encoding: String = "utf-8"):Option[String] = {
    try
    {
      val source = scala.io.Source.fromFile(filename, encoding)
      val contents = source.mkString
      source.close()
      return Some(contents)
    }
    catch 
    {
      return None
    }

  }
Run Code Online (Sandbox Code Playgroud)

但它没有编译.我回来了"值apply不是Nothing的成员"和"值isDefinedAt不是Nothing的成员"作为行的错误消息return None.

我可以找到返回选项使用匹配的所有示例,但这在这里没有意义.如果由于某种原因我无法读取文件,我只想不失败.

在这种情况下我该怎么办?在Scala中有这种做事的模式吗?

design-patterns scala nullable

6
推荐指数
2
解决办法
6077
查看次数

没有开罗的ggplot unicode角色?

我希望在我的绘图中出现Unicode字符,作为混合字符串的一部分,例如?=0.84将0.84保存在变量中,比方说cor.value.

这实际上排除了诸如expressionbquote(这里建议)的解决方案.我不知道它们是否会单独工作,但试图将它们与变量值相结合paste是一个问题.我能让它工作的唯一方法是在我的源代码中实际使用unicode符号.它甚至出现在R Studio的情节中.

但是当我试图打印时,我只是..改为.到目前为止,我发现的唯一建议是使用开罗,但开罗正在破坏我的剩余情节,所以我想坚持使用原始的pdf设备.

有没有机会,通过使用Unicode或其他东西,在字幕中打印字符串,但不必使用开罗?


这是开罗所做的一个例子(这应该是图的一角,带有灰色边框):

来自开罗的截图

部分点被切断,没有被剪裁.因此,当它与边框重叠时,边框略微偏移,并且点"透过"边框(此处您只在底部看到它,在其他地方它更明显).底部和右侧边框比左边和上边框更粗.点背后非常浅灰色的带子在开罗更为宽广.标准PDF设备中不存在这些问题.

标准截图

我目前正在研究Fedora 21系统,但是这个文档也必须在Windows 8或10上编译,最好也在其他Linux版本上编译.


这是绘图的代码(打算以小尺寸观看,大约2x1.5英寸).当前的计划是将文本放在c.a变量中并将其放在轴标签所在的位置,但我希望保持我的选项打开以使其成为后面的注释:

 offset.plotdata <- data.frame(understandability=c(2.95, 0.85, 0.75, 1.15, 2.25, 2.05, 1.95, 2.15, 2.25, 0.75, 2.05, 0.85), lowercase.pseudonym=c("A", "B", "C", "D", "E", "F", "A", "D", "E", "C", "F", "B"), questionnaire=c(rep("pre", 6), rep("post", 6)))
offset.plotdata$decorative.points <- c(1,2,3,4,5,NA,1,2,3,4,5,NA)
middle.blue <- "#2186D9"
variable.name <- "understandability"
cor.value <- 0.84
c.a <- "rho = 0.84"
ggplot(offset.plotdata, 
       aes_string(x="questionnaire", y=variable.name, 
                  group="lowercase.pseudonym"))+ …
Run Code Online (Sandbox Code Playgroud)

unicode r ggplot2

5
推荐指数
1
解决办法
344
查看次数

当我在Scala中发现数据处于不一致状态时抛出哪个异常?

我有一个小型Scala程序,它从数据源中读取数据.此数据源当前是.csv文件,因此它可以包含数据不一致.

在为我的数据实现存储库模式时,我实现了一个方法,该方法将返回一个特定字段的对象,该字段应该是唯一的.但是,我不能保证它真的是唯一的,就像在.csv文件中一样,我无法以真实数据库中的方式强制执行数据质量.

因此,该方法检查存储库中是否存在具有所请求的字段值的一个或零个对象,并且这很顺利.但我不太了解Scala(或Java),我发现Java异常层次结构的图表并不是很有帮助.如果有两个对象具有相同的唯一值,那么抛出是适当的例外.我该怎么用?

scala exception-handling

4
推荐指数
1
解决办法
2487
查看次数

R 中的错​​误消息“尝试在 NULL 上设置属性”

我正在自己阅读统计教科书。我正在使用半官方代码(来自其他人编写的手册,但在教科书网站上有链接)来计算示例和练习。

该代码包括一个用于拟合广义线性模型的函​​数。我从手册中输入它并按照建议运行它。尽管实际拟合有效,但在为结果分配标签时出现上述错误。

抛出错误的行是

names(fit$part) <- dn 
Run Code Online (Sandbox Code Playgroud)

在这一点上,价值dnIS[1] "(Intercept)" "Var1"和的值fit$par就是[1] -5.9604611 0.3165604

我在那里没有看到任何 NULL,想知道是什么导致了错误。

完整的代码是:

ct <- data.frame(alcohol.comsumption = c("0", "<1", "1-2", "3-5", ">= 6"), scores=c(0, 0.5, 1.5, 4, 7), absent = c(17066, 14464, 788, 126, 37), present = c(48, 38, 5, 1, 1))

n <- ct$absent + ct$present
alc.consumption <- rep(ct$scores, n)
y <- rep(rep(c(1,0), nrow(ct)), c(rbind(ct$present, ct$absent)))

logitreg <- function(x, y, wt = rep(1, length(y)), intercept = T, start = rep(0, p), …
Run Code Online (Sandbox Code Playgroud)

r nullreferenceexception

2
推荐指数
1
解决办法
2万
查看次数

如何在不抛出异常的情况下将字符串读入枚举?

我有一些数据为.csv.它手动输入到Excel中,我必须将其加载到Scala程序中.

单个记录的大多数字段都是自由文本字符串或数字,但是少数字段来自预先指定的可能字符串的短列表.我为这类信息创建了枚举,比如

object ScaleType extends Enumeration {
    val unknown = Value("unknown")
    val nominal = Value("nominal")
    val ordinal = Value("ordinal")
    val interval = Value("interval")
    val ratio = Value("ratio")
}
Run Code Online (Sandbox Code Playgroud)

我将csv读入Iterator [Array [String]],对于每一行,我创建一个scala类的新实例,从行中的信息设置其属性.假设在csv中,它是line(8),告诉我们我们使用的比例类型.所以,line是的Array[String],line(8)是一个字符串,其内容应在枚举中列出的值之一.

由于数据是手动输入的,因此包含错误.我使用if语句来查明是否line(8)完全为空,但我无法弄清楚如何查看我得到的字符串是否是一个缩放类型.

val scale = if(line(8).length > 0)
            {
                ScaleType.withName(line(8))
            }
        else ScaleType.unknown
Run Code Online (Sandbox Code Playgroud)

我今天准备这样的情况发生:如果有人已经进入规模型"rtnl",我想上面的设置VAL scaleScaleType.unknown并记录问题(像print("scale reading error on line " + lineNumber就足够了).相反,抛出异常,我不知道如何在异常发生之前检查问题.

enumeration scala

2
推荐指数
1
解决办法
1242
查看次数

分配给数据框时,因子成为字符

我有一个因素,并希望将其作为数据框中的列.但我惊讶地发现它自动变成了一个角色,即使我指定了stringsAsFactors.

这是MWE:

a <- data.frame(dummy=1:5, stringsAsFactors = TRUE)
b <- as.factor(c("Monday", "Tuesday", "Monday", "Thursday", "Tuesday"))
a["d"] <- b

> levels(a["d"])
NULL
Run Code Online (Sandbox Code Playgroud)

我如何进行作业,以便得到一个实际因素,保持原始水平?

重要的是我不能使用之后转换因子的解决方案,因为在这个例子中,它会得到"星期二星期四星期二"的水平,而我已经准备了一个具有所有适当级别的因子,并且按照所需的顺序(在这个例子中) ,这将是一周中的所有日子.

r factors

2
推荐指数
1
解决办法
70
查看次数