让我们考虑这个小例子:
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文件,1并7在文本的单元格。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) 在这个Stackblitz中,我有一个带有异步数据的 mat-autocomplete。
当(optionSelected)触发时(当我单击一个选项时),我希望该字段完全重置,就像它刚刚渲染/初始化一样。
目前这个解决方案有两个问题!
==> 我确实必须再次模糊并聚焦或开始打字。
mat-option.mat-selected类附加到面板,因为重置只影响输入值。我用 突出显示了这一点background-color: red;。我有一个带有三角形的彩色噪声正方形。现在,我希望多边形能够像圣诞节的“饼干切割机”一样消除这种噪音。产生被多边形路径包围的噪声三角形。
如何剪切与多边形边框重叠的所有像素,然后将其另存为 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) 我想在多个页面上使用以下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)
根据条件将矢量分割成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) 我想找到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)
显然,规则需要适用于vs和am.有没有一个快速的方式没有太纠结?
规则: 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) 看来这是相关的,但我不明白。
这是我想要的一个例子:
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)
(我不明白上面的错误信息。)
请注意:
'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 | …
我希望每个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。如果我有类似这样的数据:
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和其他功能。我可能以错误的方式组合它们。
有人可以在这里帮我吗?
为什么会有人曾经选择apply(.,margin=2,.)过sapply(.,.).
sapply(mtcars,sum)
apply(mtcars,2,sum)
Run Code Online (Sandbox Code Playgroud)
第二个apply似乎很冗长.
申请保证金= 2是否有更深层次的意义?
它是历史遗留物,sapply是之后定义/发明的apply.
@Friendly助手:(我明白了这一点.)
m<-matrix(1:9,ncol=3)
sapply(m,sum)
apply(m,1,sum)
Run Code Online (Sandbox Code Playgroud)