我以以下data.table为例
df = data.table(id = c(1, 2, 3), val=c("['hello', 'world']", "['hi']", "['so', 'there']"))
Run Code Online (Sandbox Code Playgroud)
我想将像对象一样的列表拆分为id重复的单独行。所以data.table我想要的预期如下
df2 = data.table(id = c(1, 1, 2, 3, 3), val=c("hello", "world", "hi", "so", "there"))
Run Code Online (Sandbox Code Playgroud)
我尝试了以下
df[, c("test") := tstrsplit(val, ",", fixed=TRUE)]
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误
误差在
[.data.table(DF,:=(C( “测试”),tstrsplit(VAL, “”,固定= TRUE))):提供的2项被分配给3个项目栏'测试'的。如果您希望“回收” RHS,请使用 rep() 向您的代码读者明确说明这一意图。
有人可以指出我在这里做错了什么吗?提前致谢。
有没有一种好的方法可以将数据框中的一列字符转换为 R Studio 中的列表?
例如
转换类型 chr
"[1, 2, 3]"
"[11, 24, 3]"
"[1, 21, 3]"
"[14, 2, 31]"
Run Code Online (Sandbox Code Playgroud)
列出
[1, 2, 3]
[11, 24, 3]
[1, 21, 3]
[14, 2, 31]
Run Code Online (Sandbox Code Playgroud) 我正在为我的学位做一些任务,并陷入了对多变量函数进行成像的问题。下列的:
fb<-function(x) {5*x[1]^2+2*x[1]*x[2]+4*x[2]^2+4*x[1]-2*x[2]-2}
> x<--50:50
> y<--50:50
> z<-outer(x,y,fb)
Error in FUN(X, Y, ...) : unused argument (Y)
Run Code Online (Sandbox Code Playgroud)
更重要的是,我需要找到一个具有最大点的最佳值,但是当我尝试不使用向量时,它会给出下一个:
optim(c(0,0), fb, control=list(fnscale=-5))
Error in fn(par, ...) : argument "y" is missing, with no default
Run Code Online (Sandbox Code Playgroud)
请指教。
我想为一系列 DNA 序列生成一个热编码矩阵。我尝试通过以下链接解决我的问题: 如何为 DNA 序列生成一种热编码?但有些解决方案仅针对单个 DNA 序列给出,而不是针对一系列 DNA 序列。
例如
def one_hot_encode(seq):
mapping = dict(zip("ACGT", range(4)))
seq2 = [mapping[i] for i in seq]
return np.eye(4)[seq2]
one_hot_encode("AACGT")
Run Code Online (Sandbox Code Playgroud)
在上面给出的代码中,如果我运行one_hot_encode("AACGT","GGTAC","CGTAC")它将失败,我也想生成矩阵作为输出。
目前,我正在 R 中工作,下面是我在 R 数据框中的 DNA 序列(单列文件)
ACTTTA
TTGATG
CTTACG
GTACGT
Run Code Online (Sandbox Code Playgroud)
预期产出
1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0
0 0 0 1 0 0 0 1 0 0 1 0 1 …Run Code Online (Sandbox Code Playgroud) 我正在 R 中解决一个有趣的问题(可能使用igraph和/或tidygraph库),我需要在图表上找到满足某些条件的所有可能路径。问题可以简化为:
我有16 个不同的节点,可以分为4组,每个节点都有一个特征,称之为颜色。*注意:以下可能不是表示数据的最佳方式,但希望它能传达情况。
nodes_set_1 <- c("red", "blue", "orange")
nodes_set_2 <- c("green", "blue", "red", "yellow", "purple")
nodes_set_3 <- c("blue", "green", "red", "orange", "purple")
nodes_set_4 <- c("orange", "blue", "green")
Run Code Online (Sandbox Code Playgroud)
我现在需要找到这些节点之间满足以下三个条件的所有可能路径: (1) 每条路径必须恰好包含每组中的一个节点。(2) 图形是从nodes_set_1到nodes_set_2到nodes_set_3到nodes_set_4
(3) 单个路径中颜色不能重复。
例如,以下路径是有效的:
path_1 <- c(nodes_set_1[1], nodes_set_2[1], nodes_set_3[1], nodes_set_4[1])
下面的路径将无效,因为颜色“蓝色”重复:
path_2 <- c(nodes_set_1[2], nodes_set_2[2], nodes_set_3[2], nodes_set_4[2])
我希望得到一些关于设置和解决这个问题的建议。找到一种有效确定是否不存在有效解决方案的方法也将令人惊奇。
谢谢你!
我的数据集是这样的
id start_year subj1_year subj2_year
1 1 2010 2001 2003
2 2 2012 2002 2004
3 3 2015 2003 2005
4 4 2021 2004 2006
Run Code Online (Sandbox Code Playgroud)
我想创建的每个新列"Subj",每个之间的差异subject_year和start_year列(持续时间):
id start_year subj1_year subj2_year subj1_duration subj2_duration
1 1 2010 2001 2003 9 7
2 2 2012 2002 2004 10 8
3 3 2015 2003 2005 12 10
4 4 2021 2004 2006 17 15
Run Code Online (Sandbox Code Playgroud)
使用什么可以解决dplyr?谢谢!!
我有一个清单
temp_list <- c("Temp01_T1", "Temp03_T1", "Temp04_T1", "Temp11_T6",
"Temp121_T6", "Temp99_T8")
Run Code Online (Sandbox Code Playgroud)
我想按如下方式更改此列表
output_list <- c("T1_Temp01", "T1_Temp03", "T1_Temp04", "T6_Temp11",
"T6_Temp121", "T8_Temp99")
Run Code Online (Sandbox Code Playgroud)
任何线索将不胜感激
以下 R 代码会导致“错误:未找到对象‘test’”。
condition <- 1
if(condition == 0)
if(condition == 1)
{
test <- "Pass"
}
print(test)
Run Code Online (Sandbox Code Playgroud)
但是,如果我在 if 条件后添加一个大括号,如下所示,那么它就可以正常工作。
condition <- 1
if(condition == 0){}
if(condition == 1)
{
test <- "Pass"
}
print(test)
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了R 中if 条件的结构,找到了这个页面,其中写着大括号是可选的。那么为什么代码会失败呢?
r ×9
list ×2
string ×2
data.table ×1
dplyr ×1
function ×1
graph ×1
if-statement ×1
igraph ×1
matrix ×1
optimization ×1
performance ×1
plot ×1
python ×1
random ×1
regex ×1
strsplit ×1
syntax ×1
tidygraph ×1