在R中,我需要将paste0的输出写入变量,并且需要在双引号之前去掉斜杠。
paste0('interpol_df[["gene',i, '"]][["y"]]')
[1] "interpol_df[[\"gene1565\"]][[\"y\"]]"
使用cat
一只猫摆脱\
cat(paste0('interpol_df[["gene',i, '"]][["y"]]'))
interpol_df[["gene1565"]][["y"]]
要将结果写入变量,一只猫使用capture.output
:
capture.output(cat(paste0('interpol_df[["gene',i, '"]][["y"]]')))
但\
又回来了!
[1] "interpol_df[[\"gene1565\"]][[\"y\"]]"
sprintf
也没有帮助。关于如何摆脱它的任何建议?
编辑:
这段代码带有for
循环,如下所示:
inter_data<-NULL
for (i in 0:1565){
y_col<-cat(paste('interpol_df[["gene',i, '"]][["y"]]'))
inter_data<-rbind(inter_data,y_col)
}
EDIT2:
通过这个循环,我想从以下数据帧中获取y值:
$gene949
$gene949$x
[1] 1.000000 1.061224 1.122449 1.183673 1.244898 1.306122 1.367347 1.428571 1.489796 1.551020 1.612245 1.673469 1.734694 1.795918 1.857143 1.918367 1.979592 2.040816
[19] 2.102041 2.163265 2.224490 2.285714 2.346939 2.408163 2.469388 2.530612 2.591837 2.653061 2.714286 2.775510 2.836735 2.897959 2.959184 3.020408 3.081633 3.142857
[37] 3.204082 3.265306 3.326531 3.387755 3.448980 3.510204 3.571429 3.632653 3.693878 3.755102 3.816327 3.877551 3.938776 4.000000
$gene949$y
[1] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
[15] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
[29] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.02984865 0.11939459 0.20894053 0.29848647 0.38803241 0.47757835 0.56712429 0.65667023 0.74621616
[43] 0.83576210 0.92530804 1.01485398 1.10439992 1.19394586 1.28349180 1.37303774 1.46258368
$gene950
$gene950$x
[1] 1.000000 1.061224 1.122449 1.183673 1.244898 1.306122 1.367347 1.428571 1.489796 1.551020 1.612245 1.673469 1.734694 1.795918 1.857143 1.918367 1.979592 2.040816
[19] 2.102041 2.163265 2.224490 2.285714 2.346939 2.408163 2.469388 2.530612 2.591837 2.653061 2.714286 2.775510 2.836735 2.897959 2.959184 3.020408 3.081633 3.142857
[37] 3.204082 3.265306 3.326531 3.387755 3.448980 3.510204 3.571429 3.632653 3.693878 3.755102 3.816327 3.877551 3.938776 4.000000
$gene950$y
[1] 0.00000000 -0.15429366 -0.30858732 -0.46288099 -0.61717465 -0.77146831 -0.92576197 -1.08005564 -1.23434930 -1.38864296 -1.54293662 -1.69723029 -1.85152395
[14] -2.00581761 -2.16011127 -2.31440493 -2.46869860 -2.34260266 -2.07631192 -1.81002118 -1.54373044 -1.27743971 -1.01114897 -0.74485823 -0.47856749 -0.21227675
[27] 0.05401399 0.32030472 0.58659546 0.85288620 1.11917694 1.38546768 1.65175842 1.83847450 1.86604127 1.89360805 1.92117482 1.94874159 1.97630836
[40] 2.00387514 2.03144191 2.05900868 2.08657546 2.11414223 2.14170900 2.16927578 2.19684255 2.22440932 2.25197610 2.27954287
正如所建议的那样,确实有更好的方法来实现它...
答案 0 :(得分:1)
根据OP帖子中的编辑,如果我们需要抓取list
vector
中的'y'元素,那么,循环遍历list
,获取names
通过检查'y'并将元素子集
lapply(lst, function(x) x[names(x)=='y'])
或使用[
lapply(lst, `[`, 'y')
我们可以使用[[
lapply(lst, `[[`, 'y')
lst <- list(gene949 = list(x = 1:5, y = 6:10), gene950 = list(x = 11:20, y = 21:30))
答案 1 :(得分:0)
反斜杠并不是真的存在。它只显示以下字符(在本例中为引号)是特殊的。当您print(...)
向控制台发送内容时,它会以对程序员有用的方式显示数据。在这种情况下,字符串将以代码的形式显示。
查看以下颜色,了解R将如何解释未转义的代码:
"interpol_df[["gene1565"]][["y"]]"
现在这里有逃脱:
"interpol_df[[\"gene1565\"]][[\"y\"]]"
语言定义列出了10.3.1: Constants中的其他转义字符。