小编And*_*ico的帖子

自动-“将存储为文本的数字转换为数字”

让我们考虑这个小例子:

df1<- data.frame(A=c(1,NA,"pvalue",0.0003),B=c(0.5,7,"I destroy","numbers all day"),stringsAsFactors = T)
Run Code Online (Sandbox Code Playgroud)

写文件:

openxlsx::write.xlsx(df1,"Test.xlsx")
Run Code Online (Sandbox Code Playgroud)

在我得到的Excel文件,17在文本的单元格。Excel具有“直觉”,即它们是存储为文本的数字。我可以手工转换它们。

如何将这些“标记的”值自动从R内部转换为数字?

在“我想要的”中,我手动将TEXT转换为Numbers。这是“我得到的”部分(红色箭头)中“绿色三角形”后面的选项。

在此处输入图片说明

@Roland的评论:重新排列为列表不起作用。

df1<- as.data.frame(cbind(A=list(1,NA_real_,"pvalue",0.0003),B=list(0.5,7,"I destroy","numbers all day")))
openxlsx::write.xlsx(df1,"Test2.xlsx")
Run Code Online (Sandbox Code Playgroud)

excel r openxlsx

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

如何使用 mat-autocomplete 完全重置 mat-input

在这个Stackblitz中,我有一个带有异步数据的 mat-autocomplete。

(optionSelected)触发时(当我单击一个选项时),我希望该字段完全重置,就像它刚刚渲染/初始化一样。

目前这个解决方案有两个问题

  1. 清除后我没有得到任何自我暗示。我想再次获得完整的自我暗示。

==> 我确实必须再次模糊并聚焦或开始打字。

  1. 当我打字而只是模糊重新聚焦时,我仍然将mat-option.mat-selected类附加到面板,因为重置只影响输入值。我用 突出显示了这一点background-color: red;

angular-material angular

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

剪辑/剪切多边形外部的所有内容或用白色填充外部

我有一个带有三角形的彩色噪声正方形。现在,我希望多边形能够像圣诞节的“饼干切割机”一样消除这种噪音。产生被多边形路径包围的噪声三角形。

如何剪切与多边形边框重叠的所有像素,然后将其另存为 pdf?

我想出了两个想法:

  • 方法 1使用一个函数来测试像素(有色噪声)是否落在形状中。我们开始做吧!
    问题:边框像素的边缘超出线条。在这个例子中它是非常小的。您可能会争辩说只是将多边形线做得更大一点。
  • 方法2将多边形形状反转(等于:填充多边形外部),然后填充白色。
    问题:在绘图预览窗口中,结果看起来像我想要的。当我将其保存为 PDF 时,我得到的结果是一切都是白色的,带有黑色的多边形形状。

可重现的例子

library(magrittr)
library(ggplot2)
library(SDMTools)
polyGony <- c(0,0,100,50,50,100) %>% matrix(ncol=2,byrow = T) %>% as.data.frame()
deltaN <- 200  #grid width
sp1<-seq(1,100,length=deltaN)
sp2<-seq(1,100,length=deltaN)
sp<-expand.grid(x=sp1,y=sp2)

set.seed(1337)
sp$z <- sample(1:30,nrow(sp),replace = T)

# Method 1
outin = SDMTools::pnt.in.poly(sp[,1:2],polyGony)
outin$z <- sp$z
pointsInsideTri <- outin[outin$pip==1,-3]

p <- ggplot(pointsInsideTri, aes(x, y)) +
  geom_raster(aes(fill = z)) +
  scale_fill_gradientn(colours=c("#FFCd94", "#FF69B4", "#FF0000","#4C0000","#000000"))

p + geom_polygon(data = polyGony, aes(V1,V2),color="black", fill=NA) + theme(aspect.ratio = 1)

# …
Run Code Online (Sandbox Code Playgroud)

r polygon clip ggplot2

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

在多个页面上使用grid.arrange或通过layout_matrix使用marrangeGrob

我想在多个页面上使用以下layout_matrix布置图。

在此处输入图片说明

代表 例如

library(gridExtra)
library(ggplot2)

layout <- rbind(c(1,2,3,4),
                    c(1,2,3,4),
                    c(1,2,3,4),
                    c(5,5,5,5))
p <- list()
for(i in 1:15) {
    ifelse(i %% 5 > 0,
        p[[i]] <- ggplot(mtcars, aes(wt, mpg)) + geom_point() + ggtitle(paste("plot:",i)),
        p[[i]] <- tableGrob(mtcars[5:7,],rows = NULL)
    )
}
Run Code Online (Sandbox Code Playgroud)

如果我只有一页:(简单)

grid.arrange(grobs=p[1:5],layout_matrix=layout)
Run Code Online (Sandbox Code Playgroud)

如果我要多个页面:(我松开了所有图案)

marrangeGrob(grobs=p,nrow=4,ncol=2)
Run Code Online (Sandbox Code Playgroud)

请帮助我提供一个通用解决方案,使多个页面上都有一个layout_matrix。

r ggplot2 gridextra r-grid

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

根据条件拆分为list(),省略False元素

根据条件将矢量分割成n元素的最优雅方法是什么?

每个单独的true块都应该进入自己的list元素.所有的虚假元素都被扔掉了.

例1:

vec  <- c(1:3,NA,NA,NA,4:6,NA,NA,NA,7:9,NA)
cond <- !is.na(vec)

result = list(1:3,4:6,7:9)
Run Code Online (Sandbox Code Playgroud)

例2:

vec_2  <- c(3:1,11:13,6:4,14:16,9:7,20)
cond_2 <- vec_2 < 10

results_2 = list(3:1,6:4,9:7)
Run Code Online (Sandbox Code Playgroud)

对于向量和相关条件有一个通用的解决方案会很棒.veccond

我最好的尝试:

res   <- split(vec,data.table::rleidv(cond))
odd  <- as.logical(seq_along(res)%%2)
res[if(cond[1])odd else !odd]
Run Code Online (Sandbox Code Playgroud)

split r list vector

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

在DF中查找0,1变量并将其设置为具有级别顺序的因子

我想找到0,1个变量并将它们设置为具有级别顺序c(1,0)的因子.这样做的最快方法是什么.

数据:

ds <- mtcars[,c(2,8:11)]

                    cyl carb vs am gear
Mazda RX4             6    4  0  1    4
Mazda RX4 Wag         6    4  0  1    4
Datsun 710            4    1  1  1    4
Hornet 4 Drive        6    1  1  0    3
Hornet Sportabout     8    2  0  0    3
...
Run Code Online (Sandbox Code Playgroud)

显然,规则需要适用于vsam.有没有一个快速的方式没有太纠结?

规则: factor(., levels = c(1,0))

当前解决方案

DummyNames <- names(ds)[sapply(ds,function(x){x %>% na.omit %>% unique %in% c(0,1) %>% all})]
ds[,DummyNames] <- lapply(ds[,DummyNames],factor,levels=c(1,0))
Run Code Online (Sandbox Code Playgroud)

r

3
推荐指数
1
解决办法
50
查看次数

任意类型定义给出:“boolean”类型的属性“x”不能分配给字符串索引类型“string”

看来是相关的,但我不明白。

这是我想要的一个例子:

myObj应接受以下设置:

myObj = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'};
myObj = {'key1': 'val1', 'key2': {'key2': 'val2', 'btnWrap': true}, 'key3': 'val3'};
Run Code Online (Sandbox Code Playgroud)

所以我想出了以下类型定义:

let myObj: {[key: string]: string | {[key: string]: string, btnWrap: boolean}}
Run Code Online (Sandbox Code Playgroud)

“boolean”类型的属性“btnWrap”不可分配给字符串索引类型“string”.ts(2411)

(我不明白上面的错误信息。)

请注意:

  • key1、2、3 代表任意键名。
  • 'key2': {'key2': 'val2', 'btnWrap': true}注意,它应该是相同的任意键名。(例如 key2)

我很高兴得到一些指导。


@翻转:

let myObj: {
  [key: string]: string | boolean,
  btnWrap: boolean
}

myObj = {'arr0': 'val0', 'arr1': {'arr1': 'val1', 'btnWrap': false}};
Run Code Online (Sandbox Code Playgroud)

输入 '{ 'arr1': 字符串; 'btnWrap':布尔值;}' 不可分配给类型 'string | …

typescript typescript-typings

3
推荐指数
1
解决办法
5597
查看次数

设置所有相同的值NA,groupwise和colwise

我希望每个col和group出现的所有相等/相同值(唯一== 1)设置为NA:
如果每组和col我们至少有2个不同的值,我想保留它们全部.

难以解释.以下是一些示例数据:

代表.例:

ds <- data.frame()
for (i in 1:3) {
    for(ii in 1:3) {
        ds <- rbind(mtcars[i,1:4],ds)
    }
}
rownames(ds) <- NULL
ds[1,1] <- 1337;ds[2:3,3] <- 1337;ds[5,2] <- 1337;ds[8,1] <- 1337;
ds <- cbind(group=rep(1:3,each=3),ds,stringis=c("a","a","a","b","c","d","e","e","f"))
Run Code Online (Sandbox Code Playgroud)

看起来像:

> ds
  group    mpg  cyl disp  hp stringis
1     1 1337.0    4  108  93        a
2     1   22.8    4 1337  93        a
3     1   22.8    4 1337  93        a
4     2   21.0    6  160 110        b
5     2   21.0 1337  160 110 …
Run Code Online (Sandbox Code Playgroud)

r

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

在Python中,如何像R一样对by + mutate + ifelse进行分组?

我通常使用R。如果我有类似这样的数据:

Product    Index   Value
   a         1       0.5
   a         1       0.4
   c         1       1.4
   c         2       0.75
   e         2       0.6
   f         3       0.9
Run Code Online (Sandbox Code Playgroud)

如果我的R代码是:

a <- data %>%
  group_by(Product) %>%
  mutate(Flag=ifelse(all(Index==1),'right','wrong'))
Run Code Online (Sandbox Code Playgroud)

这意味着,我首先按产品对数据进行分组。然后,对于每个组,我给它一个新字段,称为Flag。如果该组中的索引全为1,则标志为正确,否则为错误。同时,所有记录都保留下来。因此,结果应如下所示:

Product    Index   Value    Flag
   a         1       0.5    right
   a         1       0.4    right
   c         1       1.4    wrong
   c         2       0.75   wrong
   e         2       0.6    wrong
   f         3       0.9    wrong
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何在python中执行相同的操作?我尝试了np.where,groupby,transform和其他功能。我可能以错误的方式组合它们。

有人可以在这里帮我吗?

python transform mutate

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

为什么有人会使用margin = 2的申请?

为什么会有人曾经选择apply(.,margin=2,.)sapply(.,.).

sapply(mtcars,sum)
apply(mtcars,2,sum)
Run Code Online (Sandbox Code Playgroud)

第二个apply似乎很冗长.

  1. 申请保证金= 2是否有更深层次的意义?

  2. 它是历史遗留物,sapply是之后定义/发明的apply.

@Friendly助手:(我明白了这一点.)

m<-matrix(1:9,ncol=3)
sapply(m,sum)
apply(m,1,sum)
Run Code Online (Sandbox Code Playgroud)

r

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