我有一个字符串向量
c("YSAHEEHHYDK", "HEHISSDYAGK", "TFAHTESHISK", "ISLGEHEGGGK",
"LSSGYDGTSYK", "FGTGTYAGGEK", "VGASTGYSGLK", "TASGVGGFSTK", "SYASDFGSSAK",
"LYSYYSSTESK")
Run Code Online (Sandbox Code Playgroud)
对于每个字符串,我想用“pY”、“pS”或“pT”替换“Y”、“S”或“T”。但我不希望所有替换都在同一个最终字符串中,我希望每个替换生成一个新字符串,例如
“YSAHEEHHYDK”变成
c("pYSAHEEHHYDK",
"YpSAHEEHHYDK",
"YSAHEEHHpYDK")
Run Code Online (Sandbox Code Playgroud) 当我stringr::str_split通过“\n”“\n\na\n”时,我得到了c("", "", "a", "").
c("a", "", "", "b")我期望当我stringr::str_split通过“\n”“a\n\nb”时可以获得,但我c("a", "", "b")却获得了。如何c("a", "", "", "b")通过拆分“a\n\n\a”来获得?
尝试:
stringr::str_split("a\n\nb", "\n")
Run Code Online (Sandbox Code Playgroud)
预计:
c("a", "", "", "b")
Run Code Online (Sandbox Code Playgroud)
结果:
c("a", "", "b")
Run Code Online (Sandbox Code Playgroud) 这是我的输入数据集,其中包含一行和 12 列/变量:
df <- data.frame(q_q10=0,q_q20=0, q_q30=0,q_q40=400,
q_q10_low=0,q_q20_low=0,q_q30_low=0,q_q40_low=350,
q_q10_up=24,q_q20_up=24,q_q30_up=24,q_q40_up=500)
Run Code Online (Sandbox Code Playgroud)
我想重塑 df ,以便得到一个包含 4 行和 3 个变量(分位数、下、上)的数据框。换句话说,我希望 df2 看起来像:
data.frame(quantile=c(0,0,0,400), low=c(0,0,0,350), up=c(24,24,24,500))
Run Code Online (Sandbox Code Playgroud)
我如何使用包pivot_longer()中的功能来做到这一点tidyr?
谢谢!!
我在 R 中有一个简单的整数向量。我想在向量中随机选择n 个位置并在向量中“合并”它们(即总和)。此过程可能发生多次,即在 100 个向量中,可能会发生 5 个合并/求和事件,每个事件中分别合并 2、3、2、4 和 2 个向量位置。例如:
#An example original vector of length 10:
ex.have<-c(1,1,30,16,2,2,2,1,1,9)
#For simplicity assume some process randomly combines the
#first two [1,1] and last three [1,1,9] positions in the vector.
ex.want<-c(2,30,16,2,2,2,11)
#Here, there were two merging events of 2 and 3 vector positions, respectively
#EDIT: the merged positions do not need to be consecutive.
#They could be randomly selected from any position.
Run Code Online (Sandbox Code Playgroud)
但此外,我还需要记录“合并”了多少个向量位置(如果向量中的位置未合并,则包括值 1)——将它们称为索引。由于前两个合并后三个合并在上面的示例中,索引数据将如下所示:
ex.indices<-c(2,1,1,1,1,1,3)
Run Code Online (Sandbox Code Playgroud)
最后,我需要把它全部放在一个矩阵中,所以上面例子中的最终数据将是一个 2 列矩阵,其中一列是整数,另一列是索引:
ex.final<-matrix(c(2,30,16,2,2,2,11,2,1,1,1,1,1,3),ncol=2,nrow=7) …Run Code Online (Sandbox Code Playgroud) 我有一个嵌套列表,have_list. 中心是一个包含四个整数向量的列表,a, b, c, d。
对于a、b、c、d,每个都有唯一的cutoff值。我想找到当整数大于相关截止值时的第一个位置。
如果广告有相同的内容,我可以cutoff通过以下方式执行此操作:
rapply(have_list, function(x) which.max(x > cutoff), how = "list")
Run Code Online (Sandbox Code Playgroud)
我的具体问题是,如果可能的话,如何在没有for循环的情况下使用广告的相应截止值。我似乎在互联网上找不到任何东西,但如果我忽略了之前的问题,我深表歉意。
cutoff <- c(a = 5, b = 17, c = 11, d = 7)
set.seed(05062020)
have_list <- list(Outer1 = list(a = sample(1:25, 10),
b = sample(1:25, 10),
c = sample(1:25, 10),
d = sample(1:25, 10)),
Outer2 = list(a = sample(1:25, …Run Code Online (Sandbox Code Playgroud) 我有一个嵌套列表(或列表列表),其中包含NA随机分配的值。我试图确定嵌套列表是否包含所有NA值。例如:
#Example list with NA values
L.miss<-list(list(NA,NA,c(NA,NA,NA),c(NA,NA)),list(1,6,c(0,3,NA,0,NA,0),c(0,NA,0,1,0,0),1,NA,c(0,1),2,c(0,0)),
list(NA,NA),list(1,0),list(1,NA,c(NA,0,0,0),c(NA,NA),c(1,0,0,NA,0),0))
Run Code Online (Sandbox Code Playgroud)
在这里,L.miss[[1]]并L.miss[[3]]包含所有NA值。当我尝试:
all.NA<-sapply(L.miss, function(x) all(is.na(x)))
Run Code Online (Sandbox Code Playgroud)
它返回一个逻辑向量[1] FALSE FALSE TRUE FALSE FALSE。期望的输出将是[1] TRUE FALSE TRUE FALSE FALSE因为position L.miss[[1]]并L.miss[[3]]包含all的向量NA。我已经尝试过lapply并rapply具有相同的功能,但无法正常工作,并且详尽的Internet搜索无法提供太多帮助。我不确定为什么要接这个[[3]]职位而不是这个[[1]]职位。任何意见,将不胜感激!
最近有人通过以下方式与我分享了他们的数据表dput(),并弹出了一个我以前没有遇到过的错误:
错误:意外的 '<' 位于:" class = c("data.table", "data.frame"), .internal.selfref = <"
经过一番挖掘后,我发现这与 data.tables 特别相关,并且按照这些答案中的建议,删除了internal.selfref = <pointer: 0x7fd60e036ce0>)成功分配数据的技巧。
然而,我预计新手用户会经常共享这些类型的数据;我还没有找到合理/可持续的解决方案来防止使用dput仅临时功能导出和/或在接收运行后将其删除。
如果我showAttributes从control = c("keepNA", "keepInteger", "niceNames", "showAttributes")里面删除,dput那么.internal.selfref结构就消失了,但是关于结构的其他一切也消失了。
上述链接问题中提供的问题和答案年龄为5-9岁;我希望可以使用一些改进的功能(我显然不知道)来告诉我dput忽略这一点,或者也许我可以在数据表本身上做一些事情,然后dput将其.internal.selfref完全删除。
有没有办法提供dput对象的data.table而不产生.internal.selfref?
提前致谢。
问题示例:
dattab <- data.table::data.table(a = 1:5, b = 6:10)
dput(dattab)
structure(list(a = 1:5, b = 6:10), row.names = c(NA, -5L),
class = c("data.table", …Run Code Online (Sandbox Code Playgroud) 我有一个 CSV 文件,我试图导入其中大小写不一致的变体以指示丢失的数据,例如:
read.csv(
text = "A,B,C
1,Not indicated, NOT indicated
4,abc,not indicated
NOT INDICATED, def, noT InDiCated")
# A B C
# 1 1 Not indicated NOT indicated
# 2 4 abc not indicated
# 3 NOT INDICATED def noT InDiCated
Run Code Online (Sandbox Code Playgroud)
我试图将它们作为函数(或来自另一个包的类似函数)导入NA ,忽略read.csv()大小写。我想要的输出是:
# A B C
# 1 1 NA NA
# 2 4 abc NA
# 3 NA def NA
Run Code Online (Sandbox Code Playgroud)
该read.csv()命令na.string接受字符串的字符向量来替换NA,但大小写变体最初是未知的,并且有太多的排列使其不切实际。
有没有一种方法可以使用正则表达式或其他替代方法来导入所有大小写变体,NA而不指定它们中的每一个?在这种特定情况下,重要的是在读入数据时(即,在数据内或类似的)而不是在附加步骤中实现这一点(即,读入数据,然后使用附加代码进行清理,(即,如此处 …
我正在学习 R,并且我在 seq() 上遇到问题\n我知道 seq(0, 3) 是 0 1 2 3。\n但我不知道为什么 seq(0:3) 是1 2 3 4。
\n在 RDocumentation(https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/seq)中,它说
\nseq(from, to)\nseq(from, to, by= )\nseq(from, to, length.out= )\nseq(along.with= )\nseq(from)\nseq(length.out= )\nRun Code Online (Sandbox Code Playgroud)\n第一种形式生成序列 from, from+/-1, \xe2\x80\xa6, to (与 from:to 相同)。
\n那么 seq(0, 3) 和 seq(0:3) 是不是相同?
\n我有这些(杂乱的)数据,其中包含每个患者的药物治疗阶段(ip 或 cp)、药物名称(编码为数字)以及多种药物的剂量信息:
df_have
# id ip_drug1 ip_dose1 ip_drug2 ip_dose2 cp_drug1 cp_dose1 cp_drug2 cp_dose2
# 1 A1 1 300 3 100 6 500 7 100
# 2 A2 1 300 2 200 11 300 NA NA
# 3 A3 1 500 NA NA 9 100 5 1500
Run Code Online (Sandbox Code Playgroud)
我想让这些数据整洁并采用长格式:
df_want
# id phase drug dose
# 1 A1 ip 1 300
# 2 A1 ip 3 100
# 3 A1 cp 6 500
# 4 A1 cp 7 100
# 5 …Run Code Online (Sandbox Code Playgroud)